Eu me deparei com um caso (aparentemente) muito estranho.
Pegue o número 2 ( 0b10) e mascare-o com 1 ( 0b01)
Isso deve produzir o 0b00que é equivalente a 0.
No entanto, é aqui que entra o Sr. Schrödinger:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Uísque. Tango. Foxtrot.
Reconheço que não sou o mais perspicaz quando se trata de operadores bitwise - então talvez eu tenha me enganado terrivelmente, terrivelmente errado em algum lugar?
No entanto, em Python:
0b10 & 0b01 == 0 = True
0b10 & 0b01 != 0 = False
...tão?
Porém, algo mais estranho:
—
Lily Chung
0b0+1avalia para 2em algumas versões, devido a um bug do analisador.
var_dump(!(0b10 & 0b01))