web-dev-qa-db-fra.com

Opérations de priorité et de masque binaire

J'ai rencontré un cas (apparemment) très étrange.

Prenez le chiffre 2 (0b10) et masquez-le avec 1 (0b01)

Cela devrait produire 0b00 ce qui équivaut à 0.

Cependant, voici où intervient M. 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-trot.

Je 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 tort quelque part?

Cependant, en Python:

0b10 & 0b01 == 0 = True

0b10 & 0b01 != 0 = False

...alors?

94
infomaniac

Vous faites en fait ceci:

var_dump(0b10 & (0b01 == 0));
var_dump(0b10 & (0b01 != 0));

Essayer:

var_dump((0b10 & 0b01) == 0);
var_dump((0b10 & 0b01) != 0);
150
Matthew