Поразрядная операция И
Выполнение поразрядной операции И происходит с той лишь разницей, что между каждой парой разрядов производится операция И, смысл которой состоит во фразе "оба одновременно". Результат ее равен 1 тогда и только тогда, когда равны 1 оба операнда:
.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
Наиболее часто используемый вариант этой операции :
a = a & b; или a &= b;
Он интерпретируется таким образом: если бит операнда b равен 0 то бит результата однозначно будет нулевым, если 1 -то результат сохранит значение бита переменной a. Такую операцию можно назвать ВЫДЕЛЕНИЕ БИТОВ по маске, или просто МАСКИРОВАНИЕ БИТОВ первого операнда. Более очевиден смысл такой операции, если b является константой -в операнде a сохраняются значения только тех битов, которые установлены в 1 в константе, остальные очищаются:
a &= 0x0861; // Выделить биты 0,5,6,11, остальные очистить
a &= 0x00F0; // Выделить биты с 4 по 7, остальные очистить
// (биты второй цифры справа)
Поразрядную операцию " и" можно использовать и без сохранения результата как операцию ПРОВЕРКИ БИТОВ, например:
if ((a & 0x0200) !=0) // Проверить, установлен ли в 1
// 9-й бит переменной a