Составное присваивание с побитовым И (&=) часто применяется к переменной и константе, чтобы сбросить определенные биты в переменной в нулевое состояние. В руководствах по программированию такую операцию часто называют сбросом или очисткой битов.
Синтаксис
x &= y; // эквивалентно x = x & y;
Параметры
x - переменная типа char, int или long.
y - целочислительная константа или переменная типа char, int или long.
Пример
Работа побитового И (&):
0 0 1 1 операнд1
0 1 0 1 операнд2
----------
0 0 0 1 (операнд1 & операнд2) - результат
Операция побитового И между битами и 0 сбрасывает их в ноль, т.е. если переменная myByte имеет тип byte:
myByte & B00000000 = 0;
Операция побитового И между битами и 0 не изменяет их:
myByte & B11111111 = myByte;
Примечание: т.к. при побитовых операциях мы имеем дело с битами, для представления констант удобно использовать двоичный вид. Числа по-прежнему имеют то же самое значение просто их не так легко понять. Кроме того, B00000000 показан для ясности, но ноль в любой системе счисления равен нулю (хммм, что-то философское тут есть?)
Следовательно, чтобы очистить (установить в нуль) биты 0 и 1 переменной, оставляя остальную часть переменной без изменений, используйте составное присваивание с побитовым И (&=) вместе с константой 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 маска
----------------------
x x x x x x 0 0
не изменились
биты очищены
т.е, если
myByte = 10101010;
myByte &= B1111100 == B10101000;
Смотрите также:
!= (составное побитовое ИЛИ)
& (побитовое И)
! (побитовое ИЛИ)
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/BitwiseCompoundAnd |