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