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