🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Operatori Bitwise in JavaScript

Codegrind Team•Aug 23 2024

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.