Operatori Bitwise in JavaScript
Gli operatori bitwise in JavaScript ti permettono di eseguire operazioni a livello di bit sui numeri interi. Questi operatori lavorano sui singoli bit di un numero, consentendoti di manipolare i dati in modo molto efficiente. Anche se gli operatori bitwise sono meno utilizzati nelle applicazioni quotidiane, sono fondamentali per operazioni di basso livello e ottimizzazione delle prestazioni. In questa guida, esploreremo i diversi operatori bitwise disponibili in JavaScript e come utilizzarli.
Introduzione ai Bit e Numeri Binari
Prima di addentrarci negli operatori bitwise, è importante comprendere che in JavaScript i numeri sono rappresentati in formato binario, dove ogni numero è composto da una sequenza di bit (0 e 1). Ad esempio, il numero 5 in binario è rappresentato come 0101
.
Tipi di Operatori Bitwise in JavaScript
JavaScript fornisce una serie di operatori bitwise che ti permettono di eseguire operazioni su singoli bit.
1. AND Bitwise (&
)
L’operatore AND bitwise confronta ogni bit di due numeri. Restituisce 1
solo se entrambi i bit corrispondenti sono 1
, altrimenti restituisce 0
.
Esempio
let a = 5; // 0101 in binario
let b = 3; // 0011 in binario
let risultato = a & b; // 0001 in binario (1 in decimale)
console.log(risultato); // Output: 1
2. OR Bitwise (|
)
L’operatore OR bitwise confronta ogni bit di due numeri. Restituisce 1
se almeno uno dei bit corrispondenti è 1
.
Esempio
let a = 5; // 0101 in binario
let b = 3; // 0011 in binario
let risultato = a | b; // 0111 in binario (7 in decimale)
console.log(risultato); // Output: 7
3. XOR Bitwise (^
)
L’operatore XOR bitwise (exclusive OR) confronta ogni bit di due numeri. Restituisce 1
se i bit corrispondenti sono diversi, altrimenti restituisce 0
.
Esempio
let a = 5; // 0101 in binario
let b = 3; // 0011 in binario
let risultato = a ^ b; // 0110 in binario (6 in decimale)
console.log(risultato); // Output: 6
4. NOT Bitwise (~
)
L’operatore NOT bitwise inverte tutti i bit di un numero, cambiando 1
in 0
e 0
in 1
.
Esempio
let a = 5; // 0101 in binario
let risultato = ~a; // 1010 in binario (in realtĂ -6 in decimale a causa della rappresentazione del segno in complemento a 2)
console.log(risultato); // Output: -6
5. Shift a Sinistra (<<
)
L’operatore di shift a sinistra sposta tutti i bit di un numero verso sinistra di un certo numero di posizioni, riempiendo con 0
i bit di destra.
Esempio
let a = 5; // 0101 in binario
let risultato = a << 1; // 1010 in binario (10 in decimale)
console.log(risultato); // Output: 10
6. Shift a Destra con Segno (>>
)
L’operatore di shift a destra con segno sposta tutti i bit di un numero verso destra di un certo numero di posizioni, mantenendo il bit del segno (il bit più a sinistra).
Esempio
let a = -10; // 11110110 in binario (rappresentazione a 8 bit per -10)
let risultato = a >> 1; // 11111011 in binario (-5 in decimale)
console.log(risultato); // Output: -5
7. Shift a Destra Senza Segno (>>>
)
L’operatore di shift a destra senza segno sposta tutti i bit di un numero verso destra di un certo numero di posizioni, riempiendo con 0
i bit di sinistra. Non considera il bit del segno, quindi il risultato è sempre un numero positivo.
Esempio
let a = -10; // 11110110 in binario (rappresentazione a 8 bit per -10)
let risultato = a >>> 1; // 01111011 in binario (123 in decimale)
console.log(risultato); // Output: 2147483643 (considerando i 32 bit di rappresentazione)
Esempi Pratici di Utilizzo degli Operatori Bitwise
1. Verifica se un Numero è Pari o Dispari
Puoi utilizzare l’operatore AND bitwise per determinare se un numero è pari o dispari. Se il bit meno significativo è 1
, il numero è dispari.
function isPari(numero) {
return (numero & 1) === 0;
}
console.log(isPari(10)); // Output: true (10 è pari)
console.log(isPari(7)); // Output: false (7 è dispari)
2. Scambio di Valori Senza Variabile Temporanea
Puoi utilizzare l’operatore XOR bitwise per scambiare i valori di due variabili senza usare una variabile temporanea.
let a = 5;
let b = 7;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a); // Output: 7
console.log(b); // Output: 5
3. Mascheramento di Bit
Puoi utilizzare l’operatore AND bitwise per “mascherare” (ovvero, azzerare) bit specifici di un numero.
let numero = 15; // 1111 in binario
let maschera = 6; // 0110 in binario
let risultato = numero & maschera; // 0110 in binario (6 in decimale)
console.log(risultato); // Output: 6
Conclusione
Gli operatori bitwise in JavaScript offrono un modo potente per manipolare i singoli bit di un numero, consentendo di eseguire operazioni di basso livello che possono ottimizzare il codice in termini di prestazioni e spazio di memoria. Sebbene non siano usati comunemente nelle applicazioni di alto livello, comprendere come funzionano ti permetterĂ di affrontare scenari piĂą complessi e ottimizzare algoritmi in modo efficiente. Seguendo questa guida, hai ora una solida comprensione degli operatori bitwise e di come utilizzarli nel tuo codice JavaScript.