Поразрядные логические операции

Поразрядные логические операции

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

~ : Дополнение до единицы, или поразрядное отрицание

Эта унарная операция изменяет каждую 1 на 0, а 0 на 1. Поэтому

~(10011010) == (01100101)

&: Поразрядное И

Эта бинарная операция сравнивает последовательно разряд за разрядом два операнда. Для каждого разряда результат равен 1, если только оба соответствующих разряда операндов равны 1. (В терминах "истинно-ложно" результат получается истинным, если только каждый из двух одноразрядных операндов является истинным.) Так,

(10010011) & (00111101) == (00010001)

потому что только четвертый и первый разряды обоих операндов содержат 1.

| : Поразрядное ИЛИ

Эта бинарная операция сравнивает последовательно разряд за разрядом два операнда. Для каждого разряда результат равен 1, если любой из соответствующих разрядов операндов равен 1. [В терминах "истинно-ложно" результат получается истинным, если один из двух (или оба) одноразрядных операндов является истинным.] Так,

(10010011) | (00111101) == (10111111)

потому что все разряды, кроме шестого, в одном из двух операндов имеют значение 1.

^: Поразрядное исключающее ИЛИ

Эта бинарная операция сравнивает последовательно разряд за разрядом два операнда. Для каждого разряда результат равен 1, если один нз двух (но не оба) соответствующих разрядов операндов равен 1. [В терминах "истинно-ложно" результат получается истинным, если один из двух (но не оба) одноразрядных операндов является истинным.] Поэтому

(10010011) ^ (00111101) == (10101110)

Заметим, что, поскольку нулевой разряд в обоих операндах имеет значение 1, нулевой разряд результата имеет значение 0.

Применение

Описанные выше операции часто используются для установки некоторых разрядов, причем другие разряды остаются неизменными. Например, предположим, что мы определили MASK в директиве #define MASK, равным 2, т. е. двоичному значению 00000010, имеющему ненулевое значение только в первом разряде. Тогда оператор

flags = flags & MASK;

установит все разряды flags (кроме первого) в 0, потому что любое значение разряда при выполнении операции. & дает 0, если разряд второго операнда равен 0. Однако первый разряд останется неизменным. (Если первый разряд операнда содержит 1, то результат операции 1 & 1 равен 1, а если первый разряд имеет значение 0, то 0 & 1 будет равно 0.) Аналогично оператор

flags = flags | MASK;

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.2.4 Побитовые логические операции

Из книги C++ автора Хилл Мюррей

3.2.4 Побитовые логические операции Побитовые логические операцииamp; ! ^ ~ »» ««применяются к целым, то есть к объектам типа char, short, int, long и их unsigned аналогам, результаты тоже цлые.Одно из стандартных применений побитовых логических опраций – реализация маленького множества


4. Null-значения и логические операции

Из книги Базы данных: конспект лекций автора Автор неизвестен

4. Null-значения и логические операции Обычно в системах управления базами данных непосредственно поддерживаются только три логические операции: отрицание ¬, конъюнкция & и дизъюнкция ?. Операции следования ? и равносильности ? выражаются через них с помощью


Глава 16 Логические операции

Из книги Adobe Photoshop CS3 автора Завгородний Владимир

Глава 16 Логические операции • Понятие логических операций• Использование логических операцийРаботая с выделением, с которым мы познакомились в прошлой главе, можно использовать логические операции – это позволит в некоторых случаях упростить создание выделения или


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

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Логические операции Для создания объектов более сложных, чем изначальные звезды, прямоугольники и эллипсы, мы можем использовать логические операции. Это гораздо проще, чем полноценная векторная графика, где мы будем создавать фигуры с нуля.Для выполнения логических


4.1. Логические переменные и логические операции

Из книги Информатика: аппаратные средства персонального компьютера автора Яшин Владимир Николаевич

4.1. Логические переменные и логические операции Информация (данные, машинные команды и т. д.) в компьютере представлена в двоичной системе счисления, в которой используется две цифры – 0 и 1. Электрический сигнал, проходящий по электронным схемам и соединительным


5.17. Поразрядные операции над числами

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

5.17. Поразрядные операции над числами Иногда требуется работать с двоичным представлением объекта Fixnum. На прикладном уровне такая необходимость возникает нечасто, но все-таки возникает.Ruby обладает всеми средствами для таких операций. Для удобства числовые константы


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

Из книги Технология XSLT автора Валиков Алексей Николаевич

Логические операции В XSLT имеются две логические операции — or и and. Эти операции бинарны, то есть каждая из них определена для двух операндов. Если операнды не являются булевыми значениями, они неявным образом приводятся к булевому типу.Семантика or и and очевидна — они


Поразрядные операции

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Поразрядные операции Поразрядные операции выполняют над разрядами своих операндов логические функции И (&), включающее ИЛИ (|) и исключающее ИЛИ (^). Операнды поразрядных операций должны иметь целый тип, но бит знака, если он есть, также участвует в операции. Над


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

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Логические операции Логические операции выполняют над своими операндами логические функции И (&&) и ИЛИ (||). Операнды логических операций могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Сначала всегда


Резюме: логические операции и выражения

Из книги C++ для начинающих автора Липпман Стенли

Резюме: логические операции и выражения 1. ЛОГИЧЕСКИЕ ОПЕРАЦИИ Операндами логических операций обычно являются условные выражения. У операции != имеется только один операнд. Остальные имеют по два - один слева от знака и другой справа от него. &&  И||  ИЛИ!   НЕII.


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

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

IV. Логические операции Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа. && Логическое И: результат операции имеет значение "истина",


Поразрядные операции сдвига

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Поразрядные операции сдвига Эти операции сдвигают разряды влево или вправо. Мы снова запишем двоичные числа в явной форме, чтобы подробно показать механизм сдвига. && : Сдвиг влево Эта операция сдвигает разряды левого операнда влево на число позиций, указанное правым


4.3. Операции сравнения и логические операции

Из книги автора

4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое


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

Из книги автора

Логические операции Логические операции позволяют комбинировать выражения, возвращающие логические величины. Язык JavaScript поддерживает три логические операции.Операция логического И (&&) возвращает true, если только оба операнда истинны. Например, (1<7)&&(3>2). При


Поразрядные операции

Из книги автора

Поразрядные операции Очень редко в сценариях JavaScript используются поразрядные операции, позволяющие манипулировать числами на уровне битов. Различают поразрядные логические операции и поразрядные операции сдвига. Для хранения целочисленных значений в JavaScript выделяется


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

Из книги автора

Логические операции К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно