JavaScript - Opérateurs Bitwise

Salut à toi, futurs magiciens du codage ! Aujourd'hui, nous allons plonger dans le monde fascinant des opérateurs bitwise de JavaScript. Je sais de quoi vous êtes en train de penser : "Opérateurs bitwise, qu'est-ce que c'est ?" Ne vous inquiétez pas ! À la fin de cette leçon, vous manipulerez les bits comme un pro. Alors, mettons-nous en route pour cette aventure binaire ensemble !

JavaScript - Bitwise Operators

Opérateurs Bitwise JavaScript

Les opérateurs bitwise sont des outils spéciaux dans JavaScript qui nous permettent de travailler avec des nombres au niveau binaire. Cela signifie que nous traitons avec des 1 et des 0, tout comme les ordinateurs le font à l'intérieur. Cela peut sembler effrayant, mais croyez-moi, c'est en réalité quite fun une fois que vous avez pris l'habitude !

Avant de nous plonger dans les détails, regardons tous les opérateurs bitwise que nous allons couvrir :

Opérateur Nom Description
& AND Définit chaque bit à 1 si les deux bits sont 1
| OR Définit chaque bit à 1 si l'un des deux bits est 1
^ XOR Définit chaque bit à 1 si seulement l'un des deux bits est 1
~ NOT Inverse tous les bits
<< Décalage à gauche Décale à gauche en ajoutant des zéros à droite
>> Décalage à droite Décale à droite en ajoutant des copies du bit le plus à gauche à gauche
>>> Décalage à droite avec remplissage de zéros Décale à droite en ajoutant des zéros à gauche

Maintenant, cassons-les un par un !

Opérateur Bitwise AND (&)

L'opérateur Bitwise AND est comme un portier très strict dans un club exclusif. Il ne laisse passer un 1 que si les deux entrées sont 1. Sinon, c'est un 0. Voyons cela en action :

let a = 5;  // 0101 en binaire
let b = 3;  // 0011 en binaire
console.log(a & b);  // 0001 en binaire, qui est 1 en décimal

Dans cet exemple, nous comparons 5 (0101) et 3 (0011) bit par bit. Seul le bit le plus à droite est 1 dans les deux nombres, donc c'est le seul 1 qui passe. Le résultat est 0001, qui est 1 en décimal.

Opérateur Bitwise OR (|)

L'opérateur Bitwise OR est comme un vigile beaucoup plus indulgent. Si l'une des entrées est un 1, il le laisse passer. Voyons comment cela fonctionne :

let a = 5;  // 0101 en binaire
let b = 3;  // 0011 en binaire
console.log(a | b);  // 0111 en binaire, qui est 7 en décimal

Ici, nous obtenons 1 partout où l'un des deux bits est 1, resulting in 0111, qui est 7 en décimal.

Opérateur Bitwise XOR (^)

L'opérateur XOR est comme un jeu de fête où vous êtes seulement autorisé à entrer si vous portez un chapeau ou une écharpe, mais pas les deux ! Il renvoie 1 seulement si les bits sont différents. Regardez ceci :

let a = 5;  // 0101 en binaire
let b = 3;  // 0011 en binaire
console.log(a ^ b);  // 0110 en binaire, qui est 6 en décimal

Nous obtenons 1 où les bits sont différents (deuxième et troisième bits à partir de la droite), resulting in 0110, ou 6 en décimal.

Opérateur Bitwise NOT (~)

L'opérateur NOT est comme un jour de l'opposé - il inverse tous les bits. Mais il y a un revers ! En JavaScript, il inverse également le signe et soustrait 1. Voyons cela :

let a = 5;  // 0101 en binaire
console.log(~a);  // -6 en décimal

Le résultat peut vous surprendre ! C'est parce que JavaScript utilise le complément à deux pour les nombres négatifs. Donc ~5 est en réalité -6.

Opérateur de Décalage à Gauche (<<)

L'opérateur de Décalage à Gauche est comme un tapis roulant déplaçant les bits vers la gauche et ajoutant des zéros sur la droite. Chaque décalage multiplie effectivement le nombre par deux :

let a = 5;  // 0101 en binaire
console.log(a << 1);  // 1010 en binaire, qui est 10 en décimal
console.log(a << 2);  // 10100 en binaire, qui est 20 en décimal

Voyez comment 5 devient 10 avec un décalage, et 20 avec deux décalages ? C'est comme de la magie !

Opérateur de Décalage à Droite (>>)

L'opérateur de Décalage à Droite fait l'inverse, déplaçant les bits vers la droite. Il divise effectivement le nombre par deux (arrondi vers le bas) :

let a = 5;  // 0101 en binaire
console.log(a >> 1);  // 0010 en binaire, qui est 2 en décimal

5 divisé par 2 est 2.5, mais nous arrondissons vers le bas à 2.

Opérateur de Décalage à Droite avec Remplissage de Zéros (>>>)

Cet opérateur est similaire à >>, mais il remplit toujours avec des zéros de la gauche, même pour les nombres négatifs :

let a = -5;  // 11111111111111111111111111111011 en binaire (32-bit)
console.log(a >>> 1);  // 01111111111111111111111111111101 en binaire, qui est 2147483645 en décimal

Celui-ci est un peu délicat ! Il est principalement utilisé lorsque vous devez traiter un nombre comme unsigned.

Et voilà, les amis ! Vous avez pris vos premiers pas dans le monde des opérations bitwise. Ces opérateurs peuvent sembler un peu abstraits maintenant, mais ils sont incroyablement utiles pour des tâches comme travailler avec des données binaires, créer des fonctions de hachage, ou optimiser certains algorithmes.

Souvenez-vous, la pratique rend parfait. Essayez de jouer avec ces opérateurs, et bientôt vous serez à découper des bits comme un pro ! Bon codage, et que les bits soient avec vous !

Credits: Image by storyset