In questo tutorial imparerai a conoscere gli operatori bit a bit di JavaScript e i suoi tipi con l'aiuto di esempi.
Operatori bit per bit JavaScript
Gli operatori bit per bit trattano i propri operandi come un insieme di cifre binarie a 32 bit (zero e uno) ed eseguono azioni. Tuttavia, il risultato viene visualizzato come valore decimale.
Operatori | Nome | Esempio |
---|---|---|
& | Bitwise AND | x & y |
| | OR bit per bit | x | y |
^ | Bitwise XOR | x y |
~ | Bitwise NON | ~x |
<< | Tasto maiuscolo di sinistra | x << y |
>> | Spostamento a destra di propagazione dei segni | x>> y |
>>> | Spostamento a destra con riempimento zero | x>>> y |
Nota : i numeri interi minimo e massimo rappresentabili tramite un numero con segno a 32 bit sono compresi tra -2147483648 e 2147483647.
JavaScript AND bit per bit
AND bit per bit &
restituisce 1 se i bit corrispondenti di entrambi gli operandi sono 1 altrimenti restituisce 0 .
Operando 1 | Operando 2 | Operazione AND |
---|---|---|
0 | 0 | 0 & 0 è 0 |
0 | 1 | 0 & 1 è 0 |
1 | 0 | 1 & 0 è 0 |
1 | 1 | 1 & 1 è 1 |
Diamo un'occhiata all'operazione AND bit per bit di due interi 12 e 25 .
In binario, 12 = 01100 25 = 11001 // Operazione AND bit per bit di 12 e 25 00001100 e 00011001 --------- 00001000 = 8 (in decimale)
Nota : la conversione di file binari da 12 a 32 bit ci dà 00000000000000000000000000001100
e 25 dà 00000000000000000000000000011001
. Tuttavia, abbiamo rimosso gli zeri precedenti per semplicità.
Esempio 1: operatore AND bit per bit
// bitwise AND operator example let a = 12; let b = 25; result = a & b; console.log(result); // 8
Nel programma sopra,
- Il valore binario di 12 è
00000000000000000000000000001100
- Il valore binario di 25 è
00000000000000000000000000011001
. - Quando viene eseguita l'operazione AND bit per bit , il risultato binario sarà
00000000000000000000000000001000
convertito nel valore decimale 8.
JavaScript OR bit per bit
OR bit per bit |
restituisce 1 se uno dei bit corrispondenti di un operando è 1 altrimenti restituisce 0 .
Operando 1 | Operando 2 | OPPURE Operazione |
---|---|---|
0 | 0 | 0 | 0 è 0 |
0 | 1 | 0 | 1 è 1 |
1 | 0 | 1 | 0 è 1 |
1 | 1 | 1 | 1 è 1 |
Diamo un'occhiata all'operazione OR bit per bit di due interi 12 e 25 .
In binario, 12 = 01100 25 = 11001 // Operazione OR bit per bit di 12 e 25 00001100 | 00011001 -------- 00011101 = 29 (in decimale)
Esempio 2: operatore OR bit per bit
// bitwise OR operator example let a = 12; let b = 25; result = a | b; console.log(result); // 29
Quando viene eseguita l'operazione OR bit per bit , il risultato binario sarà 00000000000000000000000000011101
convertito nel valore decimale 29.
JavaScript Bitwise XOR
Bitwise XOR ^
restituisce 1 se i bit corrispondenti sono diversi e restituisce 0 se i bit corrispondenti sono gli stessi.
Operando 1 | Operando 2 | Operazione XOR |
---|---|---|
0 | 0 | 0 0 è 0 |
0 | 1 | 0 1 è 1 |
1 | 0 | 1 0 è 1 |
1 | 1 | 1 1 è 0 |
In binario, 12 = 01100 25 = 11001 // Operazione XOR bit per bit di 12 e 25 00001100 00011001 -------- 00010101 = 21 (in decimale)
Esempio 3: operatore XOR bit per bit
// bitwise XOR operator example let a = 12; let b = 25; result = a b; console.log(result); // 21
Quando viene eseguita un'operazione XOR bit per bit , il risultato binario sarà 00000000000000000000000000010101
convertito nel valore decimale 21.
JavaScript Bitwise NOT
Bitwise NOT ~
inverte il bit ( 0 diventa 1 , 1 diventa 0 ).
In binario, 12 = 00000000000000000000000000001100 // Bitwise Not Operation of 12 ~ 00000000000000000000000000001100 --------------------------------- 11111111111111111111111111110011 = -13 (in decimale)
Durante la conversione 11111111111111111111111111110011
in decimale, il valore sarebbe 4294967283. Ma quando si utilizza l'operatore bit a bit, il valore viene calcolato nel formato del complemento a 2 con segno tranne che per lo spostamento a destra con riempimento zero.
Il complemento di 2 viene calcolato invertendo i bit (complemento di 1) e quindi aggiungendo 1 . Per esempio,
13 in binary: 00000000000000000000000000001101 1's complement of 13: 11111111111111111111111111110010 2's complement of 13: 11111111111111111111111111110010 +1 --------------------------------- 11111111111111111111111111110011
Notice the 2's complement of 13 (i.e. -13) is 11111111111111111111111111110011
. This value is equivalent to the bitwise NOT of 12.
Example 4: Bitwise NOT Operator
// bitwise NOT operator example let b = 12; result = ~b; console.log(result); // -13
When bitwise NOT operation is performed, the binary result will be 11111111111111111111111111110011
which converts into the decimal value -13.
Note: Bitwise NOT of a number x gives -(x + 1). Notice above ~2
gives -3.
JavaScript Left shift
Nell'operatore di spostamento a sinistra <<
, l'operando a sinistra specifica il numero e l'operando a destra specifica il numero da spostare a sinistra. Zero bit vengono aggiunti a destra e bit in eccesso da sinistra vengono scartati.

Per esempio,
let a = 8; let b = 1; result = a << b; // 1 ( 00000000000000000000000000010000 ) console.log(result);
JavaScript Sign-propagating right shift
Nell'operatore di spostamento a destra >>
, il primo operando specifica il numero e il secondo operando specifica il numero da spostare a destra. I bit in eccesso da destra vengono scartati. Le copie del bit più a sinistra vengono spostate da sinistra, da cui il nome sign-propagating.

Per esempio,
let a = 8; let b = 1; // 11111111111111111111111111111101 let c = -3; result = a>> b; result1 = c>> b; // 4 (00000000000000000000000000000100) console.log(result); // -1 (11111111111111111111111111111111) console.log(result1);
JavaScript Zero-fill right shift
Lo >>>
spostamento a destra di riempimento con zero sposta l'operando a destra riempiendo i bit di zero a sinistra. I bit in eccesso da destra vengono scartati.

Per esempio,
let a = 8; let b = 1; let c = -3; result = a>>> b; result1 = c>>> b; // 4 (00000000000000000000000000000100) console.log(result); // 1073741823 (00111111111111111111111111111111) console.log(result);