JavaScript - Operatori Bitwise

Ciao a tutti, futuri maghi della programmazione! Oggi andremo a immergerci nel mondo affascinante degli operatori bitwise di JavaScript. Ora, so cosa stai pensando: "Operatori bitwise cosa?" Non preoccuparti! Alla fine di questa lezione, sarai in grado di manipolare i bit come un professionista. Quindi, mettiamoci in cammino insieme in questa avventura binaria!

JavaScript - Bitwise Operators

Operatori Bitwise in JavaScript

Gli operatori bitwise sono strumenti speciali in JavaScript che ci permettono di lavorare con i numeri a livello binario. Questo significa che stiamo avendo a che fare con 1 e 0, proprio come fanno i computer internamente. Potrebbe sembrare spaventoso, ma fidati, è in realtà molto divertente una volta che ci si fa l'abitudine!

Prima di immergerci nei dettagli, diamo un'occhiata a tutti gli operatori bitwise che esploreremo:

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 solo uno dei due bit è 1
~ NOT Inverte tutti i bit
<< Shift a Sinistra Sposta a sinistra spingendo zero dalla destra
>> Shift a Destra Sposta a destra spingendo copie del bit più a sinistra dalla sinistra
>>> Shift a Destra con Zero Sposta a destra spingendo zero dalla sinistra

Ora, analizziamoli uno per uno!

Operatore Bitwise AND (&)

L'operatore AND è come un portiere molto severo in un club esclusivo. Lascia passare solo un 1 se entrambi gli input sono 1. Altrimenti, è un 0. Vediamo come funziona:

let a = 5;  // 0101 in binario
let b = 3;  // 0011 in binario
console.log(a & b);  // 0001 in binario, che è 1 in decimale

In questo esempio, stiamo confrontando 5 (0101) e 3 (0011) bit per bit. Solo il bit più a destra è 1 in entrambi i numeri, quindi è l'unico 1 che passa. Il risultato è 0001, che è 1 in decimale.

Operatore Bitwise OR (|)

L'operatore OR è come un controllore di accesso molto più indulgente. Se uno degli input è un 1, lo lascia passare. Vediamo come funziona:

let a = 5;  // 0101 in binario
let b = 3;  // 0011 in binario
console.log(a | b);  // 0111 in binario, che è 7 in decimale

Qui, otteniamo 1 ovunque 5 o 3 abbia un 1, resulting in 0111, che è 7 in decimale.

Operatore Bitwise XOR (^)

L'operatore XOR è come un gioco di feste strano dove sei ammesso solo se indossi un cappello o una sciarpa, ma non entrambi! Restituisce 1 solo se i bit sono diversi. Dai un'occhiata:

let a = 5;  // 0101 in binario
let b = 3;  // 0011 in binario
console.log(a ^ b);  // 0110 in binario, che è 6 in decimale

Otteniamo 1 dove i bit sono diversi (secondo e terzo da destra), resulting in 0110, o 6 in decimale.

Operatore Bitwise NOT (~)

L'operatore NOT è come l'opposite day - inverte tutti i bit. Ma c'è un inghippo! In JavaScript, inverte anche il segno e sottrae 1. Vediamo:

let a = 5;  // 0101 in binario
console.log(~a);  // -6 in decimale

Il risultato potrebbe sorprenderti! È perché JavaScript utilizza il complemento a due per i numeri negativi. Quindi ~5 è effettivamente -6.

Operatore Shift a Sinistra (<<)

L'operatore Shift a Sinistra è come un nastro trasportatore che sposta i bit a sinistra e aggiunge zero sulla destra. Ogni spostamento raddoppia effettivamente il numero:

let a = 5;  // 0101 in binario
console.log(a << 1);  // 1010 in binario, che è 10 in decimale
console.log(a << 2);  // 10100 in binario, che è 20 in decimale

Vedi come 5 diventa 10 con uno spostamento, e 20 con due spostamenti? È come magia!

Operatore Shift a Destra (>>)

L'operatore Shift a Destra fa l'opposto, spostando i bit a destra. Effettivamente dimezza il numero (arrotondando verso il basso):

let a = 5;  // 0101 in binario
console.log(a >> 1);  // 0010 in binario, che è 2 in decimale

5 diviso per 2 è 2.5, ma arrotondiamo verso il basso a 2.

Operatore Shift a Destra con Zero (>>>)

Questo operatore è simile a >>, ma sempre riempie con zero dalla sinistra, anche per i numeri negativi:

let a = -5;  // 11111111111111111111111111111011 in binario (32-bit)
console.log(a >>> 1);  // 01111111111111111111111111111101 in binario, che è 2147483645 in decimale

Questo è un po' tricky! È principalmente utilizzato quando devi trattare un numero come unsigned.

Eccoci, ragazzi! Avete appena fatto i vostri primi passi nel mondo delle operazioni bitwise. Questi operatori potrebbero sembrare un po' astratti ora, ma sono incredibilmente utili per compiti come lavorare con dati binari, creare funzioni di hash o ottimizzare certi algoritmi.

Ricorda, la pratica fa la perfezione. Prova a giocare con questi operatori, e presto sarai in grado di sbriciolare bit come un professionista! Buon coding, e che i bit siano con te!

Credits: Image by storyset