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