Opérateurs bit à bit JavaScript
- Page précédente Déstructuration JS
- Page suivante Expression régulière JS
Opérateurs bit à bit JavaScript
Opérateur | Nom | Description |
---|---|---|
& | AND | Si les deux bits sont 1, alors chaque bit est mis à 1 |
| | OR | Si l'un des deux bits est 1, alors chaque bit est mis à 1 |
^ | XOR | Si un des deux bits est 1, alors chaque bit est mis à 1 |
~ | NOT | Inverser tous les bits |
<< | Déplacement à gauche avec zéros | En déplaçant à gauche en poussant un zéro à partir de la droite et en enlevant le bit le plus à gauche. |
>> | Déplacement à droite signé | En déplaçant à droite en poussant une copie du bit le plus à gauche à partir de la gauche et en enlevant le bit le plus à droite. |
>>> | Déplacement à droite avec zéros | En déplaçant à droite en poussant un zéro à partir de la gauche et en enlevant le bit le plus à droite. |
Exemple
Opération | Résultat | Équivaut à | Résultat |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript utilise des nombres binaires de 32 bits pour les opérations binaires
JavaScript stocke les nombres en nombres en virgule flottante de 64 bits, mais toutes les opérations binaires sont exécutées en nombres binaires de 32 bits.
Avant l'exécution de l'opération binaire, JavaScript convertit le nombre en entier signé sur 32 bits.
Après l'exécution de l'opération binaire, le résultat est converti en nombre JavaScript de 64 bits.
Dans cet exemple, des nombres binaires sur 4 bits sans signe sont utilisés. Par conséquent, ~5 retourne 10.
Comme JavaScript utilise des entiers signés sur 32 bits, JavaScript retourne -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Les entiers signés utilisent le bit le plus à gauche comme signe moins.
Opération binaire AND
Lorsque l'on effectue une opérateur binaire AND sur une paire de bits, si les bits sont tous à 1, le résultat est 1.
Exemple unitaire :
Opération | Résultat |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Exemple à 4 bits :
Opération | Résultat |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Opération binaire OR
Lorsque l'on effectue une opérateur binaire OR sur une paire de bits, si l'un des bits est 1, le résultat est 1 :
Exemple unitaire
Opération | Résultat |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Opération à 4 bits :
Opération | Résultat |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Opération binaire XOR
Lorsque l'on effectue une opérateur binaire XOR sur une paire de bits, si les bits sont différents, le résultat est 1 :
Exemple unitaire :
Opération | Résultat |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Exemple à 4 bits :
Opération | Résultat |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
Opération binaire AND en JavaScript (&)
Si les bits sont tous à 1, l'opérateur binaire AND retourne 1 :
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Exemple
var x = 5 & 1;
Opération binaire OR en JavaScript (|)
Si l'un des bits est 1, l'opération binaire OR renvoie 1 :
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Exemple
var x = 5 | 1;
Opération binaire XOR (^) en JavaScript
Si les bits sont différents, XOR renvoie 1 :
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Exemple
var x = 5 ^ 1;
Opération binaire NOT (~) en JavaScript
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Exemple
var x = ~5;
Déplacement de gauche (<< avec remplissage par des zéros) en JavaScript
C'est un déplacement de gauche avec remplacement par des zéros. Un ou plusieurs zéros sont déplacés à partir de la droite, et le bit le plus à gauche est supprimé :
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Exemple
var x = 5 << 1;
Déplacement de droite (>> avec signe) en JavaScript
C'est un déplacement de droite qui conserve le signe. Le bit le plus à gauche est déplacé à partir de la gauche, et le bit le plus à droite est sorti :
Décimal | Binaire |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Exemple
var x = -5 >> 1;
Déplacement de droite (>>> avec remplissage par des zéros) en JavaScript
C'est un déplacement de droite avec remplacement par des zéros. Un ou plusieurs zéros sont déplacés à partir de la gauche, et le bit le plus à droite est sorti :
Décimal | Binaire |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Exemple
var x = 5 >>> 1;
Entier signé de 32 bits (nombre binaire)
Il est facile de comprendre un entier 32 bits avec un seul bit configuré :
Représentation binaire | Valeur décimale |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Ajouter plus de positions révèle le modèle binaire :
Représentation binaire | Valeur décimale |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Les nombres négatifs sont le complément binaire de la valeur positive ajouté de 1 :
Représentation binaire | Valeur décimale |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Convertir un décimal en binaire
Exemple
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Convertir un binaire en décimal
Exemple
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Page précédente Déstructuration JS
- Page suivante Expression régulière JS