J'ai rencontré un cas (apparemment) très étrange.
Prenez le numéro 2 ( 0b10
) et masquez-le avec 1 ( 0b01
)
Cela devrait produire l' 0b00
équivalent de 0.
Cependant, voici où M. Schrödinger entre en jeu:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Whisky. Tango. Fox-trot.
Je ne suis, certes, pas le plus pointu en ce qui concerne les opérateurs au niveau du bit - alors peut-être que j'ai horriblement, horriblement mal quelque part?
Cependant, en Python:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
...alors?
0b0+1
évalue 2
dans certaines versions, en raison d'un bogue de l'analyseur.
var_dump(!(0b10 & 0b01))