&
Побитовое И. Учитывая два бита для входов, следующий дают разрядный вывод по побитовому И:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
В этом случае,
7 in binary is 00000111
8 in binary is 00001000
--------
00000000, which is 0 in decimal.
Допустит, у вас 26 вместо 8.
7 in binary is 00000111
26 in binary is 00011010
--------
00000010, which is 2 in decimal.
Поразрядных операции используются для извлечения и обработки полей, упакованных в число.
Например, у вас есть 3 поля, упакованные в одно число, по два из 4 бит (0,15), один и 3 бита (0..7).
// n = aaaabbbbccc
// Unpack the fields:
a = (n >> 7) & 0xF;
b = (n >> 3) & 0xF;
c = (n >> 0) & 0x7;
// Pack the fields:
n = (a << 7)
| (b << 3)
| (c << 0);