Составной побитовый оператор И &= часто используется с переменной и константой для принудительного перевода определенных битов в переменной в состояние LOW (в 0). В руководствах по программированию это часто называют «очисткой» или «сбросом» битов.
Обзор побитового оператора И :
0 0 1 1 операнд1
0 1 0 1 операнд2
--------
0 0 0 1 (операнд1 и операнд2) - возвращаемый результат
x &= y; // Эквивалентно x = x & y;
x: переменная Допустимые типы данных: char, int, long
y: переменная или постоянная. Разрешенные типы данных: char, int, long
Пример кода
Биты, которые «поразрядно ANDed» с 0 очищаются до 0, поэтому, если myByte является байтовой переменной,
myByte & B00000000 = 0;
Биты, которые "поразрядны с AND" с 1, остаются неизменными,
myByte & B11111111 = myByte;
Поскольку мы имеем дело с битами в побитовом операторе - удобно использовать двоичный форматер с константами. Числа по-прежнему имеют одинаковое значение в других представлениях, их просто не так просто понять. Кроме того, B00000000 показан для ясности, но ноль в любом числовом формате равен нулю.
Следовательно, чтобы очистить (установить в ноль) биты 0 и 1 переменной, оставив остальную часть переменной без изменений, используйте составной битовый оператор AND (&=) с константой B11111100
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 маска
---------------
х х х х х х 0 0
| |
| |___ биты очищены
|__________ биты без изменений
myByte = B10101010; myByte &= B11111100; // Результат в B10101000