Operatori bit JavaScript
- Pagina precedente Decomposizione JS
- Pagina successiva Espressioni regolari JS
Operatori bit JavaScript
Operatore | Nome | Descrizione |
---|---|---|
& | AND | Imposta ogni bit a 1 se entrambi i bit sono 1 |
| | OR | Imposta ogni bit a 1 se uno dei due bit è 1 |
^ | XOR | Imposta ogni bit a 1 se uno dei due bit è 1 |
~ | NOT | Inversione di tutti i bit |
<< | Spostamento a sinistra con riempimento zero | Spostamento a sinistra con riempimento zero, facendo cadere il bit più a sinistra. |
>> | Spostamento a destra con segno | Spostamento a destra con copia del bit più a sinistra, facendo cadere il bit più a destra. |
>>> | Spostamento a destra con riempimento zero | Spostamento a destra con riempimento zero, facendo cadere il bit più a destra. |
Esempio
Operazione | Risultato | è equivalente | Risultato |
---|---|---|---|
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 utilizza numeri bitwise a 32 bit
JavaScript memorizza i numeri come numeri a virgola mobile a 64 bit, ma tutte le operazioni bitwise vengono eseguite con numeri binari a 32 bit.
Prima di eseguire l'operazione bitwise, JavaScript converte il numero in un intero a segno di 32 bit.
Dopo aver eseguito l'operazione bitwise, il risultato viene convertito in un numero JavaScript a 64 bit.
Gli esempi sopra utilizzano 4 bit binari senza segno. Quindi ~ 5 restituisce 10.
Poiché JavaScript utilizza 32 bit di interi a segno, JavaScript restituirà -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Gli interi a segno utilizzano il bit più a sinistra come segno.
Operazione bitwise AND
Quando si esegue un'operazione bitwise AND su un paio di bit, se i bit sono tutti 1 viene restituito 1.
Esempio a unità:
Operazione | Risultato |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Esempio a 4 bit:
Operazione | Risultato |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Operazione bitwise OR
Quando si esegue un'operazione bitwise OR su un paio di bit, se uno dei bit è 1 viene restituito 1:
Esempio a unità
Operazione | Risultato |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Esempio a 4 bit:
Operazione | Risultato |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Operazione bitwise XOR
Quando si esegue un'operazione bitwise XOR su un paio di bit, se i bit sono diversi viene restituito 1:
Esempio a unità:
Operazione | Risultato |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Esempio a 4 bit:
Operazione | Risultato |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
Operazione bitwise AND (&) in JavaScript
Se i bit sono tutti 1, l'operazione bitwise AND restituisce 1:
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Esempio
var x = 5 & 1;
Operazione bitwise OR (|) in JavaScript
Se uno dei bit è 1, l'operazione OR restituisce 1:
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Esempio
var x = 5 | 1;
Operazione XOR (^) in JavaScript
Se i bit sono diversi, XOR restituisce 1:
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Esempio
var x = 5 ^ 1;
Operazione NOT (~) in JavaScript
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Esempio
var x = ~5;
Shift a sinistra (<< con riempimento di zero) in JavaScript
Questo è lo shift a sinistra con riempimento di zero. Un o più bit zero vengono spostati da destra, e il bit più a sinistra viene eliminato:
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Esempio
var x = 5 << 1;
Shift a destra (>> con segno) in JavaScript
Questo è lo shift a destra con segno. Il bit più a sinistra viene spostato da sinistra, e il bit più a destra viene eliminato:
Decimale | Binario |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Esempio
var x = -5 >> 1;
Shift a destra (>>> con riempimento di zero) in JavaScript
Questo è lo shift a destra con riempimento di zero. Un o più bit zero vengono spostati da sinistra, e il bit più a destra viene eliminato:
Decimale | Binario |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Esempio
var x = 5 >>> 1;
Interi a 32 bit con segno (numero binario)
È facile comprendere un intero a 32 bit con un solo bit impostato:
Rappresentazione binaria | Valore decimale |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Aggiungere più posizioni numeriche rivelano il modello binario:
Rappresentazione binaria | Valore decimale |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
I numeri negativi sono il complemento a uno del numero positivo più 1:
Rappresentazione binaria | Valore decimale |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Convertire decimale in binario
Esempio
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Convertire binario in decimale
Esempio
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Pagina precedente Decomposizione JS
- Pagina successiva Espressioni regolari JS