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?
php
bit-manipulation
bitwise-operators
operator-precedence
Danny Kopping
la source
la source
var_dump(!(0b10 & 0b01))
0b0+1
évalue2
dans certaines versions, en raison d'un bogue de l'analyseur.Réponses:
Vous faites réellement ceci:
Essayer:
la source
0b10 & (0b01 == 0)
pourquoi quelqu'un appliquerait-il bit à bit avec oui non une sorte d'information.