Присваивание с побитовым сложением "|="

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

Обзор побитового оператора ИЛИ:

0 0 1 1 операнд1
0 1 0 1 операнд2
-------
0 1 1 1 (операнд1 | операнд2) - возвращаемый результат


Синтаксис

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

Параметры

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

Пример кода

Биты, к которым применяется операция побитовое ИЛИ с 0 - не изменяются, поэтому, если myByte является байтовой переменной,

myByte | B00000000 = myByte;

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

myByte | B11111111 = B11111111;

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

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

Следовательно, чтобы установить биты 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   маска
---------------
х х х х х х  1 1

      |      |
      |      |___ 
биты установлены
      |__________ биты без изменений

Так что если:

myByte = B10101010;
myByte |= B00000011 == B10101011;