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?
php
bit-manipulation
bitwise-operators
operator-precedence
Danny Kopping
źródło
źródło
var_dump(!(0b10 & 0b01))
0b0+1
Zwraca2
w niektórych wersjach, z powodu błędu parsera.Odpowiedzi:
Robisz to:
var_dump(0b10 & (0b01 == 0)); var_dump(0b10 & (0b01 != 0));
Próbować:
var_dump((0b10 & 0b01) == 0); var_dump((0b10 & 0b01) != 0);
źródło
0b10 & (0b01 == 0)
dlaczego ktoś miałby zastosować bitowe z tak, bez rodzaju informacji.