Как проверить является ли число чётным или нечётным? Конечно же оператор "остаток от деления"
is_odd = bool(x%2)
Если остаток от деления равен 0 то это чётное число, если 1 то нечётное.
Но есть еще альтернативный способ, это битовый оператор AND
is_odd = bool(x&1)
Как это работает?
Распечатайте ряд целых чисел в двоичном формате
>>> for i in range(0, 7):
>>> print(bin(i))
0b0
0b1
0b10
0b11
0b100
0b101
0b110
Можно заметить, что последние биты чередуются между 0 и 1.
А что делает оператор AND (&)? Он возвращает 1 если оба бита числа имеют значение 1.
Учитывая, что у числа 1 в двоичном представлении только один бит равен 1, и он последний, то все остальные биты от любого числа всегда будут возвращать 0.
Таким образом, делая операцию AND любого числа с числом 1 мы всегда получим либо число 0 либо число 1. Это будет зависеть от последнего бита другого операнда.
Выглядит это примерно так
>>> 38 & 1
0
00100110 &
00000001 =
00000000
>>> 227 & 1
1
11100011 &
00000001 =
00000001
#tricks