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