Логические операции


Логические операции делятся на две группы:

- условные;

- побитовые.

Условные логические операции чаще всего используются в операциях проверки условия if и могут выполняться над любыми объектами. Результат условной логической операции:

- 1 если выражение истинно;

- 0 если выражение ложно.

Вообще, все значения, отличные от нуля, интерпретируются условными логическими операциями как истинные.

Основные условные логические операции:

- && - И (бинарная) — требуется одновременное выполнение всех операций отношения;

- || - ИЛИ (бинарная) — требуется выполнение хотя бы одной операции отношения;

- ! - НЕ (унарная) — требуется невыполнение операции отношения.

Побитовые логические операции оперируют с битами, каждый из которых может принимать только два значения: 0 или 1.

Основные побитовые логические операции в языке Си:

- & конъюнкция (логическое И) - бинарная операция, результат которой равен 1 только когда оба операнда единичны (в общем случае - когда все операнды единичны);

- | дизъюнкция (логическое ИЛИ) - бинарная операция, результат которой равен 1 когда хотя бы один из операндов равен 1;

- ~ инверсия (логическое НЕ) - унарная операция, результат которой равен 0 если операнд единичный, и равен 1, если операнд нулевой;

- ^ исключающее ИЛИ - бинарная операция, результат которой равен 1, если только один из двух операндов равен 1 (в общем случае если во входном наборе операндов нечетное число единиц).

Пример:

unsigned char a = 14; // a = 0000 1110

unsigned char b = 9; // b = 0000 1001

unsigned char c, d, e, f;

c = a & b; // c = 8 = 0000 1000

d = a | b; // d = 15 = 0000 1111

e = ~a; // e = 241 = 1111 0001

f = a ^ b; // f = 7 = 0000 0111

Побитовые операции позволяют осуществлять установку и сброс отдельных битов числа. С этой целью используется маскирование битов.

Для установки определенного бита необходимо соответствующий бит маски установить в 1 и произвести операцию побитового логического ИЛИ с константой, представляющей собой маску:

unsigned char a = 3;

a = a | 0x04; // a = 7, бит 2 установлен

Для сброса определенного бита необходимо соответствующий бит маски сбросить в 0 и произвести операцию побитового логического И с константой, представляющей собой инверсную маску:

unsigned char a = 3;

a = a & (~0x02); // a = 1, бит 1 сброшен

Бинарные побитовые логические операции могут быть объединены с операцией присваивания:

- объект &= выражение; // объект = объект & выражение

- объект |= выражение; // объект = объект | выражение

- объект ^= выражение; // объект = объект ^ выражение

Сдвиговые операции

Операции арифметического сдвига применяются в целочисленной арифметике и обозначаются как:

- >> - сдвиг вправо;

- << - сдвиг влево.

Общий синтаксис осуществления операции сдвига:

объект = выражение сдвиг КоличествоРазрядов;

Пример:

unsigned char a=6; // a = 0000 0110

unsigned char b;

b = a >> 1; // b = 0000 0110 >> 1 = 0000 0011 = 3

Арифметический сдвиг целого числа вправо >> на 1 разряд соответствует делению числа на 2.

Арифметический сдвиг целого числа влево << на 1 разряд соответствует умножению числа на 2.

Круглые скобки

Круглые скобки используются для заключения в них части выражения, значения которой необходимо выполнить в первую очередь. В выражении может быть любое количество круглых скобок, причем количество открывающих круглых скобок должно быть равно количеству закрывающих круглых скобок. Части выражений, заключенные в круглые скобки, должны быть либо непересекающимися, либо вложенными друг в друга.



Дата добавления: 2021-03-18; просмотров: 338;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.