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

Описание

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

&=

часто используется с переменной и константой, чтобы принудительно установить определённые биты переменной в состояние LOW (в 0). В руководствах по программированию это часто называют «очисткой» или «сбросом» битов.

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

&

И:

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

Синтаксис

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

Параметры

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

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

Пример кода

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

myByte & 0b00000000 = 0;

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

myByte & 0b11111111 = myByte;

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

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

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

1  0  1  0  1  0  1  0    переменная
1  1  1  1  1  1  0  0    маска
----------------------
1  0  1  0  1  0  0  0

биты без изменений
                 биты очищены

Вот то же представление, где биты переменной заменены символом x.

x  x  x  x  x  x  x  x    переменная
1  1  1  1  1  1  0  0    маска
----------------------
x  x  x  x  x  x  0  0

биты без изменений
                 биты очищены

Поэтому если:

myByte = 0b10101010;
myByte &= 0b11111100;  // получится 0b10101000

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