Mi sono imbattuto in un caso (apparentemente) molto strano.
Prendi il numero 2 ( 0b10
) e mascheralo con 1 ( 0b01
)
Questo dovrebbe produrre 0b00
che è equivalente a 0.
Tuttavia, ecco dove entra in gioco il signor Schrödinger:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Whisky. Tango. Foxtrot.
Certo, non sono il più acuto quando si tratta di operatori bit per bit, quindi forse ho sbagliato orribilmente, orribilmente da qualche parte?
Tuttavia, in Python:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
...così?
0b0+1
restituisce 2
in alcune versioni, a causa di un bug del parser.
var_dump(!(0b10 & 0b01))