Visit Mozilla.org

Guide JavaScript 1.5:Opérateurs:Opérateurs bit-à-bit

Un article de MDC.


Sommaire

[modifier] Opérateurs bit-à-bit

Les opérateurs bit-à-bit traitent leurs opérandes comme des séries de 32 bits (un bit = zéro ou un) plutôt que comme des nombres décimaux, hexadécimaux ou octaux. À titre d'exemple, le nombre décimal neuf a une réprésentation binaire de 1001. Les opérateurs bit-à-bit effectuent toutes leurs opérations sur de telles représentations binaires, mais elles renvoient des valeurs numériques JavaScript classiques.

Le tableau suivant résume les opérateurs bit-à-bit de JavaScript.

Opérateur Emploi Description
ET bit-à-bit (AND) a & b Place un 1 à chaque position où les bits correspondants des deux opérandes sont des 1, et renvoie la valeur ainsi obtenue.
OU bit-à-bit (OR) a | b Place un 1 à chaque position où au moins un des bits correspondants des deux opérandes est un 1 (les deux bits correspondants peuvent être égaux à 1), et renvoie la valeur ainsi obtenue.
OU EXCLUSIF bit-à-bit (XOR) a ^ b Place un 1 à chaque position où un seul des bits correspondants des deux opérandes est un 1 (les deux bits correspondants ne peuvent être égaux à 1), et renvoie la valeur ainsi obtenue.
OPPOSÉ bit-à-bit (NOT) ~ a Inverse les bits de son opérande.
Décalage vers la gauche a << b Décale la représentation binaire de a de b bits vers la gauche, en ajoutant des zéros à droite.
Décalage vers la droite (préservation du signe) a >> b Décale la représentation binaire de a de b bits vers la droite, les bits décalés étant éliminés.
Décalage vers la droite avec zéros a >>> b Décale la représentation binaire de a de b bits vers la droite, en ajoutant des zéros à gauche, les bits décalés étant éliminés.

Tableau : Opérateurs bit-à-bit

[modifier] Opérateurs bit-à-bit logiques

Conceptuellement, les opérateurs bit-à-bit logiques fonctionnent de la manière suivante :

  • Les opérandes sont convertis en entiers codés sur trente-deux bits et interprétées comme des séries de bits (un bit = zéro ou un).
  • Chaque bit du premier opérande est associé au bit correspondant du deuxième opérande : le premier bit avec le premier bit, le deuxième bit avec le deuxième, etc.
  • L'opérateur est appliqué à chaque paire de bits, et le résultat est construit en regroupant le tout.

À titre d'exemple, la représentation binaire de neuf est 1001 et la représentation binaire de quinze est 1111. Voici les résultats de l'application des opérateurs bit-à-bit à ces valeurs :

  • 15 & 9 renvoie 9 (1111 & 1001 == 1001)
  • 15 | 9 renvoie 15 (1111 | 1001 == 1111)
  • 15 ^ 9 renvoie 6 (1111 ^ 1001 == 0110)

[modifier] Décalage bit-à-bit

Les opérateurs de décalage bit-à-bit acceptent deux opérandes : le premier représente l'entité devant être décalée, le deuxième spécifie le nombre de bits de la première opérande à décaler. La direction de l'opération de décalage dépend de l'opérateur utilisé.

Les opérateurs de décalage convertissent leurs opérandes en entiers codés sur trente-deux bits et renvoient un résultat du même type que l'opérande de gauche.

Voici la liste des opérateurs de décalage :

Opérateur Description Exemple
<<
(Décalage vers la gauche)
Cet opérateur décale le premier opérande du nombre spécifié de bits vers la gauche. Les bits décalés sont éliminés. Des zéros sont ajoutés à droite. 9<<2 renvoie 36, car 1001 décalé de 2 bits vers la gauche devient 100100, c'est-à-dire 36.
>>
(Décalage vers la droite avec préservation du signe)
Cet opérateur décale le premier opérande du nombre spécifié de bits vers la droite. Les bits décalés sont éliminés. Des copies du bit le plus à gauche sont ajoutées à gauche. 9>>2 renvoie 2 car 1001 décalé de 2 bits vers la droite devient 10, c'est-à-dire 2. De même, -9>>2 renvoie -3 car il y a préservation du signe.
>>>
(Décalage vers la droite avec zéros)
Cet opérateur décale le premier opérande du nombre spécifié de bits vers la droite. Les bits décalés sont éliminés. Des zéros sont ajoutés à gauche. 19>>>2 renvoie 4, car 10011 décalé de 2 bits vers la droite devient 100, c'est-à-dire 4. Pour les nombres positifs, le décalage vers la droite avec zéros et le décalage vers la droite avec préservation du signe renvoient le même résultat.

Tableau : Opérateurs de décalage bit-à-bit