Это проблема приоритета оператора.
Побитовый оператор AND &
имеет меньший приоритет, чем оператор равенства ==
.Итак, это:
first & 0b10 == 0
То же самое, что и:
first & (0b10 == 0)
Это не то, что вы хотите.Он сравнивает 0b10
на равенство с 0, что неверно.Затем оценивается first & 0
, что равно 0.
Добавьте скобки, чтобы получить желаемое поведение:
(first & 0b10) == 0