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

Описание

Оператор составного побитового ИЛИ (|=) часто употребляется между переменной и константой чтобы установить (перевести в 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;

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