& является побитовым оператором И, и является одной из фундаментальных операций в двоичной системе.
И означает «если включены и А, и В». Пример реального мира - два переключателя в серии. Ток будет проходить только в том случае, если оба позволяют току проходить.
В компьютере это не физические переключатели, а полупроводники, и их функциональность называется логическими элементами . Они выполняют те же действия, что и переключатели, - реагируют на ток или нет.
При применении к целым числам каждый бит в одном числе объединяется с каждым битом в другом числе. Таким образом, чтобы понять побитовый оператор AND, вам необходимо преобразовать числа в двоичные, а затем выполнить операцию AND для каждой пары совпадающих битов.
Вот почему:
00011011 (odd number)
AND
00000001 (& 1)
==
00000001 (results in 1)
Принимая во внимание
00011010 (even number)
AND
00000001 (& 1)
==
00000000 (results in 0)
Поэтому операция (& 1) сравнивает самый правый бит с 1, используя логику AND. Все остальные биты фактически игнорируются, потому что ничто и ничто не ничто.
Это эквивалентно проверке, является ли число нечетным числом (все нечетные числа имеют самый правый бит, равный 1).
Вышеприведенный текст адаптирован из аналогичного ответа, который я написал на этот вопрос .