Au niveau du bit les opérateurs traitent leurs opérandes comme ensemble de 32 bits (des zéros et ceux), plutôt qu'en tant que nombres décimaux, hexadécimaux, ou octals.
Par exemple, le numéro décimal neuf a une représentation binaire de 1001. Au niveau du bit les opérateurs exécutent leurs exécutions sur de telles représentations binaires, mais ils renvoient des valeurs numériques standard de JavaScript.
Opérateur | Usage | Description | Exemple |
---|---|---|---|
AND | $x & $y | Chaque position binaire de l'opérande $x est comparée avec la position correspondante de l'opérande $y. Dans ce cas, si un 1 est trouvé dans l'une ou l'autre des opérandes, alors l'opérateur retourne un 1, sinon il renvoie un 0. | 1101 & 0111 //retourne 0101 0001 & 1000 //retourne 0000 1001 & 0001 //retourne 0001 |
OR | $x | $y | Chaque position binaire de l'opérande $x est comparée avec la position correspondante de l'opérande $y. Dans ce cas, si un 1 est trouvé dans les deux opérandes soit dans l'une, soit dans l'autre, alors l'opérateur retourne un 1, sinon il renvoie un 0. | 1101 | 0111 //retourne 1111 0001 | 1000 //retourne 1001 1001 | 0001 //retourne 1001 |
XOR | $x ^ $y | Cette opérateur OU EXCLUSIF fonctionne comme le précédent à la seule exception que le 1 ne doit se trouver que dans l'une ou l'autre des opérandes pour produire le résultat 1 sinon il renvoie un 0. | 1101 ^ 0111 //retourne 1010 0001 ^ 1000 //retourne 1001 1001 ^ 0001 //retourne 1000 |
NOT | ~ $a | L'opérateur unaire NOT retourne un 0 lorsque l'opérande contient un 1 et un 1 pour un 0. | ~1101 //retourne 0010 ~0001 //retourne 1110 ~1001 //retourne 0110 |
Décalage à gauche | $x << n | Cet opérateur déplace la représentation binaire de $x de n bits à gauche. La valeur de ces n bits est de zéro. | 15 << 2 /* 0000 1111 décalé de 2 bits produit 0011 1100 et donc retourne 60 |
Décalage à droite avec préservation du signe |
$x >> n | Cet opérateur déplace la représentation binaire de $x de n bits à droite et conserve le signe. | 15 >> 2
/* 0000 1111 décalé de 2 bits produit 0000 0011 et donc retourne 3 */ -15 >> 2 /* 11111 0001 décalé de 2 bits produit 1111 1100 t donc retourne -4 */ |