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

Описание

Составной побитовый оператор ИЛИ

|=

часто используется с переменной и константой, чтобы «установить» (в 1) определённые биты переменной.

Краткое напоминание о побитовом

|

ИЛИ:

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  1  1  1    (operand1 | operand2) - возвращаемый результат

Синтаксис

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

Параметры

  • x: переменная. Допустимые типы данных: char, int, long.

  • y: переменная или константа. Допустимые типы данных: char, int, long.

Пример кода

Биты, которые «побитово ИЛИ-енны» с 0, не изменяются, поэтому, если myByte — переменная типа byte:

myByte | 0b00000000 = myByte;

Биты, которые «побитово ИЛИ-енны» с 1, устанавливаются в 1, поэтому:

myByte | 0b11111111 = 0b11111111;

Примечания и предупреждения

Поскольку мы имеем дело с битами в побитовом операторе, удобно использовать двоичный формат с константами. Числа всё равно имеют те же значения в других представлениях, просто их не так легко понять. Кроме того, 0b00000000 показано для ясности, но ноль в любом числовом формате — это ноль.

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

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 = 0b10101010;
myByte |= 0b00000011 == 0b10101011;

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