94 votes

La priorité et le masque de bits des opérations

Je suis tombé sur une (apparemment) très étrange affaire.

Prendre le numéro 2 (0b10) et le masque de bits avec 1 (0b01)

Cela devrait produire de l' 0b00 ce qui est équivalent à 0.

Cependant, c'est là que M. de Schrödinger:

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

Le whisky. Le Tango. Foxtrot.

Je suis, certes, pas la plus forte quand il s'agit d'opérateurs au niveau du bit - alors peut-être que j'ai terriblement mal quelque part?

Toutefois, en Python:

0b10 & 0b01 == 0 = True

0b10 & 0b01 != 0 = False

...alors?

150voto

Matthew Points 25748

Vous êtes en train de faire ceci:

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

Essayez:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X