Me he encontrado con un caso (aparentemente) muy extraño.
Toma el número 2 (0b10
) y máscara de bits con 1 (0b01
)
Esto debería producir 0b00
que es equivalente a 0.
Sin embargo, aquí es donde entra Schrödinger:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Whisky. Tango. Fox.
Es cierto que no soy el más inteligente en lo que respecta a los operadores bit a bit, ¿así que tal vez me equivoqué terriblemente, terriblemente en alguna parte?
Sin embargo, en Python:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
…¿asi que?
No lo hago en PHP, pero en C, C ++ simplemente podría escribir como
var_dump(!(0b10 & 0b01))
–Grijesh Chauhan
24 de febrero de 2014 a las 10:28
Aunque algo más raro:
0b0+1
evalúa a2
en algunas versiones, debido a un error del analizador.– Lily Chung
24 de febrero de 2014 a las 16:06