CCalculate.Studio

💾 Calcolatore di operazioni bit a bit

Le operazioni bit a bit agiscono direttamente sulle singole cifre binarie (i bit) della rappresentazione di un numero, anziché trattarlo come un unico valore decimale. Questo calcolatore esegue le sei operazioni bit a bit standard — AND, OR, XOR, NOT, scorrimento a sinistra e scorrimento a destra — su interi non negativi a 32 bit e mostra la rappresentazione binaria degli operandi e del risultato.

Ultima revisione: 2026-07-07
Add as preferred on Google

Leggere la tavola di verità bit a bit

Ogni operazione logica bit a bit segue una tavola di verità fissa, applicata in modo indipendente a ciascuna coppia di posizioni corrispondenti.

Bit ABit BANDORXOR
00000
01011
10011
11110
  • Il calcolatore limita gli operandi all'intervallo di un intero con segno a 32 bit (da 0 a 2.147.483.647) perché gli operatori bit a bit di JavaScript convertono internamente i numeri in rappresentazione a 32 bit prima di operare, come previsto dalla specifica ECMAScript.
  • NOT (~A) produce sempre un risultato che, letto come intero con segno a 32 bit, vale −(A + 1); qui viene mostrato l'equivalente senza segno a 32 bit (per esempio ~12 compare come 4.294.967.283 anziché −13) affinché la rappresentazione binaria risulti inequivocabile.
  • Gli scorrimenti con B maggiore di 31 vengono limitati a 31, poiché in JavaScript spostare un valore a 32 bit di 32 o più posizioni non restituisce 0 come si potrebbe intuire, ma riparte ciclicamente usando solo i 5 bit meno significativi dell'entità dello scorrimento.

Che cosa sono le operazioni bit a bit?

Un'operazione bit a bit elabora un numero al livello delle sue singole cifre binarie, confrontando o spostando gli 0 e gli 1 della rappresentazione in base 2 invece di eseguire la consueta aritmetica in base 10. Ogni numero intero può essere scritto in binario come sequenza di bit, ciascuno corrispondente a una potenza di 2: 12, per esempio, in binario è 1100, ossia 1×8 + 1×4 + 0×2 + 0×1.

Le operazioni logiche bit a bit — AND, OR, XOR (or esclusivo) e NOT — confrontano le posizioni corrispondenti di due numeri (oppure invertono i bit di un solo numero) secondo le regole della logica booleana, applicate in modo indipendente a ciascuna posizione. Gli scorrimenti, invece, spostano tutti i bit di un numero di un certo numero di posizioni verso sinistra o verso destra, il che equivale matematicamente a moltiplicare o dividere per una potenza di 2.

Le operazioni bit a bit sono fondamentali nell'informatica e nella programmazione di basso livello: servono a impostare, azzerare e verificare singoli indicatori all'interno di un insieme di opzioni (i bit flag), a moltiplicare e dividere rapidamente per potenze di 2, negli algoritmi crittografici, nella manipolazione di grafica e colori (combinando i canali rosso, verde e blu) e nella codifica compatta dei dati.

Come si usa questo calcolatore bit a bit

  1. Inserisci il primo numero (A) come intero non negativo, da 0 a 2.147.483.647, ossia l'intervallo di un intero con segno a 32 bit.
  2. Inserisci il secondo numero (B). Per AND, OR e XOR è il secondo operando confrontato bit per bit con A; per gli scorrimenti indica invece il numero di posizioni da spostare (sono efficaci i valori da 0 a 31, mentre quelli superiori vengono limitati a 31). Con NOT il valore B viene ignorato, poiché l'operazione agisce sul solo A.
  3. Scegli l'operazione: AND, OR, XOR, NOT, scorrimento a sinistra oppure a destra.
  4. Leggi il risultato decimale insieme alla rappresentazione binaria di A, di B (o dell'entità dello scorrimento) e del risultato.

Come funziona ciascuna operazione bit a bit

AND: il bit vale 1 solo se entrambi i bit corrispondenti valgono 1
OR: il bit vale 1 se almeno un bit corrispondente vale 1
XOR: il bit vale 1 se esattamente un bit corrispondente vale 1
Scorrimento a sinistra: A << B = A × 2^B; a destra: A >> B = ⌊A ÷ 2^B⌋
Esempio: 12 AND 10 = 8; 12 OR 10 = 14; 12 XOR 10 = 6; 12 << 2 = 48; 12 >> 2 = 3

AND confronta ogni posizione e restituisce 1 soltanto dove entrambi i bit valgono 1, altrimenti 0. Esempio svolto: 12 (1100) AND 10 (1010) = 8 (1000), poiché solo la terza posizione (valore 8) vale 1 in entrambi i numeri.

OR confronta ogni posizione e restituisce 1 dove almeno uno dei due bit vale 1. Esempio svolto: 12 (1100) OR 10 (1010) = 14 (1110). XOR, l'or esclusivo, restituisce invece 1 dove esattamente uno dei due bit vale 1, ma non entrambi. Esempio svolto: 12 (1100) XOR 10 (1010) = 6 (0110).

NOT inverte ogni bit di un singolo numero: gli 0 diventano 1 e gli 1 diventano 0. Poiché questo calcolatore lavora su valori a 32 bit, NOT 12 ribalta tutti e 32 i bit e produce 4.294.967.283 se interpretato come intero a 32 bit senza segno (la rappresentazione in complemento a due di −13 se lo si legge come intero con segno).

Lo scorrimento a sinistra (A << B) sposta ogni bit di A di B posizioni verso sinistra, riempiendo con 0 le posizioni meno significative lasciate libere: equivale a moltiplicare A per 2^B. Esempio svolto: 12 << 2 = 48, come 12 × 2² = 12 × 4 = 48. Lo scorrimento a destra (A >> B) sposta invece ogni bit di B posizioni verso destra scartando i bit meno significativi, il che equivale alla divisione intera di A per 2^B con arrotondamento per difetto. Esempio svolto: 12 >> 2 = 3, come ⌊12 ÷ 4⌋ = 3.

Errori frequenti

  • Confondere AND e OR bit a bit con i corrispondenti operatori logici (booleani): i primi agiscono in modo indipendente su ogni bit del numero, mentre i secondi trattano l'intero valore come un'unica condizione vera/falsa; i risultati coincidono soltanto nel caso particolare dei valori 0 e 1.
  • Aspettarsi che uno scorrimento a sinistra molto ampio produca sempre un numero proporzionalmente più grande: spostando abbastanza, i bit significativi superano il confine dei 32 bit e vengono scartati (trabocco).
  • Leggere male il risultato di NOT: poiché l'operazione ribalta tutti e 32 i bit, il valore decimale senza segno di ~A appare molto maggiore di A, mentre nell'interpretazione con segno in complemento a due rappresenta un piccolo numero negativo, cioè −(A+1).
  • Considerare lo scorrimento a destra sempre equivalente a una divisione: su interi non negativi coincide esattamente con la divisione intera per difetto per una potenza di 2, mentre con i numeri negativi il comportamento cambia a seconda che lo scorrimento sia aritmetico o logico.

Domande frequenti

Qual è la differenza fra AND bit a bit e AND logico?

L'AND bit a bit (&) confronta due numeri bit per bit e restituisce un nuovo numero in cui ogni bit vale 1 soltanto se entrambi i bit di partenza valgono 1: per esempio 12 & 10 = 8. L'AND logico (&&) tratta invece ciascun valore come un'unica condizione vera/falsa e restituisce uno degli operandi o un booleano, valutando la veridicità anziché combinare i singoli bit. I due operatori servono a scopi diversi e in genere danno risultati molto diversi.

Come funziona lo XOR?

Lo XOR, ossia l'or esclusivo, confronta due numeri bit per bit e restituisce 1 in ogni posizione in cui esattamente uno dei due bit corrispondenti vale 1 (non entrambi e non nessuno dei due). Per 12 (1100) XOR 10 (1010) il confronto posizione per posizione dà 0110, cioè 6 in decimale. Lo XOR si usa comunemente per invertire bit, per rilevare differenze fra due valori e nei calcoli di checksum e parità più semplici.

Che cosa fa uno scorrimento a sinistra?

Uno scorrimento a sinistra (A << B) sposta ogni bit della rappresentazione binaria di A di B posizioni verso sinistra, riempiendo con 0 le posizioni meno significative rimaste libere. L'operazione equivale matematicamente a moltiplicare A per 2 elevato a B: per esempio 12 << 2 = 48, lo stesso risultato di 12 × 2² = 12 × 4 = 48.

Che cosa fa il NOT bit a bit?

Il NOT bit a bit (~A) inverte ogni bit di A: ogni 0 diventa 1 e ogni 1 diventa 0. Applicato alla rappresentazione a 32 bit di 12 (00000000000000000000000000001100), NOT produce un valore con tutti quei bit ribaltati, che come numero senza segno a 32 bit compare come 4.294.967.283 e come intero con segno rappresenta −13 in complemento a due, secondo l'identità ~A = −(A+1).

In che cosa lo scorrimento a destra differisce dalla divisione?

Sugli interi non negativi lo scorrimento a destra (A >> B) dà esattamente lo stesso risultato della divisione intera per difetto per 2^B: A >> B = ⌊A ÷ 2^B⌋. Per esempio 12 >> 2 = 3, come ⌊12 ÷ 4⌋ = 3. Le due operazioni divergono invece con i numeri negativi, dove il tipo di scorrimento (aritmetico o logico) determina il trattamento del bit di segno, un dettaglio rilevante nella programmazione di basso livello.

Perché qui le operazioni bit a bit sono limitate a interi a 32 bit?

Gli operatori bit a bit di JavaScript (&, |, ^, ~, <<, >>) convertono internamente gli operandi in interi a 32 bit prima di eseguire l'operazione, come prescrive la specifica del linguaggio ECMAScript. Questo calcolatore riproduce tale comportamento standard, pertanto gli operandi restano nell'intervallo rappresentabile su 32 bit, cioè da 0 a 2.147.483.647 per i valori non negativi qui accettati.

Fonti

  1. Warren HS Jr. Hacker's Delight. 2nd ed. Addison-Wesley, 2012. (Standard reference for bitwise algorithms and two's-complement arithmetic.)
  2. ECMA International. ECMA-262: ECMAScript Language Specification, §6.1.6.1 (Bitwise operators, ToInt32/ToUint32). ecma-international.org.
  3. Patterson DA, Hennessy JL. Computer Organization and Design: The Hardware/Software Interface. 5th ed. Morgan Kaufmann, 2013. (Binary representation and bitwise logic.)

Teoria dei numeri · Tutti i calcolatori

Calcolatori correlati