Я натрапив на (здавалося б) дуже дивний випадок.
Візьміть число 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
...так?
Щось дивніше: у деяких версіях
—
Lily Chung
0b0+1
оцінюється 2
через помилку парсера.
var_dump(!(0b10 & 0b01))