Я столкнулся с (казалось бы) очень странным случаем.
Возьмите число 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
...так?
php
bit-manipulation
bitwise-operators
operator-precedence
Дэнни Коппинг
источник
источник
var_dump(!(0b10 & 0b01))
0b0+1
оценивается как2
из-за ошибки парсера.Ответы:
Фактически вы делаете это:
Пытаться:
источник
0b10 & (0b01 == 0)
зачем кому-то применять побитовое с да нет информации.