8 votes

Opérateur XOR par bit en JavaScript

Pourquoi ça ?

console.log("1100" ^ "0001")
=> 1101 // as expected

console.log("1100" ^ "1001")
=> 1957 // ???

Veuillez expliquer. Merci.

11voto

Pointy Points 172438

Ces chiffres sont interprétés comme des nombres décimaux.

Essayez :

console.log(parseInt("1100", 2) ^ parseInt("1001", 2))

Bien sûr, la réponse (0101) est imprimée en décimal (5).

La grammaire des jetons JavaScript prend en charge les nombres en décimal, octal et hexa, mais pas en binaire. Ainsi :

console.log(0xC0 ^ 0x09)

La première a fonctionné, d'ailleurs, car 1100 (décimal) est 1101 (décimal) après le xor avec 1.

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