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 0b00
que é 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?
php
bit-manipulation
bitwise-operators
operator-precedence
Danny Kopping
fonte
fonte
var_dump(!(0b10 & 0b01))
0b0+1
avalia para2
em algumas versões, devido a um bug do analisador.Respostas:
Você está realmente fazendo isso:
Experimentar:
fonte
0b10 & (0b01 == 0)
por que alguém aplicaria bit a bit com sim nenhum tipo de informação.