Natknąłem się na (pozornie) bardzo dziwny przypadek.
Weź liczbę 2 ( 0b10
) i zamaskuj ją za pomocą 1 ( 0b01
)
Powinno to dać 0b00
odpowiednik 0.
Jednak tutaj pojawia się pan Schrödinger:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Whisky. Tango. Fokstrot.
Nie jestem, co prawda, najostrzejszy, jeśli chodzi o operatory bitowe - więc może gdzieś strasznie się pomyliłem?
Jednak w Pythonie:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
...więc?
var_dump(!(0b10 & 0b01))