Я столкнулся с (казалось бы) очень странным случаем.
Возьмите число 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
...так?
var_dump(!(0b10 & 0b01))