199 votes

Qu'est-ce que le "|" (un seul tuyau) faire en JavaScript?

 console.log(0.5 | 0); // 0
console.log(-1 | 0);  // -1
console.log(1 | 0);   // 1
 

Pourquoi 0.5 | 0 renvoie-t-il zéro, mais tout entier (y compris négatif) renvoie l'entier en entrée? Que fait le tuyau unique ("|")?

194voto

SLaks Points 391154

Ceci est un bitwise ou .
Comme les opérations au niveau des bits n'ont de sens que sur les entiers, 0.5 est tronqué.

0 | x est x , pour tout x .

166voto

Trey Points 2635

La comparaison de bits est si simple qu'elle est presque incompréhensible;) Découvrez ce "nybble"

    8 4 2 1
   -------
   0 1 1 0 = 6  (4 + 2)
   1 0 1 0 = 10 (8 + 2)
   =======
   1 1 1 0 = 14 (8 + 4 + 2)
 

Au niveau des bits, ORing 6 et 10 vous en donneront 14:

    alert(6 | 10); // should show 14
 

Terriblement déroutant!

22voto

Yahel Points 21516

Un seul tuyau est un peu sage OU .

Effectue l'opération OU sur chaque paire de bits. a OU b donne 1 si a ou b vaut 1.

JavaScript tronque les nombres non entiers. Il est donc calculé comme 0|0 , ce qui correspond à 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