Составное побитовое ИЛИ (|=)

Описание

Оператор составного побитового ИЛИ (|=) часто употребляется между переменной и константой чтобы установить (перевести в 1) отдельные биты переменной.

Синтаксис


x |= y;   // эквивалентно x = x | y;

Параметры

x: переменная типа char, int или long 

y: целочисленная константа либо переменная типа char, int или long

Пример

Для начала рассмотрим действие оператора побитового ИЛИ (|):


   0  0  1  1    операнд1
   0  1  0  1    операнд2
   ----------
   0  1  1  1    (операнд1 | операнд2) - возвращаемый результат

При выполнении операции побитового ИЛИ, биты операнда1, взаимодействующие с 0 операнда2, не изменяются. Поэтому, если myByte — переменная типа byte,


myByte | B00000000 = myByte;

При выполнении операции побитового ИЛИ, биты операнда1, взаимодействующие с 1, устанавливаются в 1:


myByte | B11111111 = B11111111;

Следовательно, чтобы установить 0-й и 1-й биты переменной, не затронув при этом остальные, необходимо использовать оператор составного побитового ИЛИ (|=) с константой B00000011


   1  0  1  0  1  0  1  0    переменная
   0  0  0  0  0  0  1  1    маска
   ----------------------
   1  0  1  0  1  0  1  1

 неизменившиеся биты
                     установленные биты

Если биты переменной обозначить как x, то та же операция будет выглядеть так:


   x  x  x  x  x  x  x  x    переменная
   0  0  0  0  0  0  1  1    маска
   ----------------------
   x  x  x  x  x  x  1  1

неизменившиеся биты
                     установленные биты


Поэтому, если:


myByte =  B10101010;

myByte |= B00000011 == B10101011;

Смотрите также

Ардуино