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!
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