Операции прецедента и битмаски

Я столкнулся с (по-видимому) очень странным случаем.

Возьмите номер 2 (0b10) и порисуйте его 1 (0b01)

Это должно произвести 0b00, что эквивалентно 0.

Однако здесь, где приходит г-н Шредингер:

var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)

Виски. Танго. Фокстрот.

Я, по общему признанию, не самый острый, когда дело доходит до поразрядных операторов - так, может быть, я ужасно ужасно ошибался?

Однако в Python:

0b10 & 0b01 == 0= True

0b10 & 0b01 != 0= False

... так?

Ответ 1

Вы на самом деле делаете это:

var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));

Try:

var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);