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 !
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