filoconduttore

Il sistema binario e le conversioni fra basi

Superiori — triennioAggiornata: 6 agosto 2026

Un circuito digitale sa distinguere due stati e basta: tensione alta o bassa, interruttore chiuso o aperto. Non è una limitazione da aggirare — è il motivo per cui i circuiti digitali sono affidabili. Un disturbo che sposta un segnale da 5 V a 4,2 V non cambia niente, perché entrambi restano “alto”. Su questa scelta si costruisce tutto il resto.

Il valore di una cifra dipende dal posto

Anche in decimale, 327327 non è “tre, due, sette”: è

3102+2101+71003 \cdot 10^2 + 2 \cdot 10^1 + 7 \cdot 10^0

La base dice di quanto cresce il peso spostandosi di una posizione a sinistra. In base 2 i pesi sono le potenze di 2, e le cifre disponibili sono solo 00 e 11:

10112=1238+0220+1212+1201=11101011_2 = \underbrace{1 \cdot 2^3}_{8} + \underbrace{0 \cdot 2^2}_{0} + \underbrace{1 \cdot 2^1}_{2} + \underbrace{1 \cdot 2^0}_{1} = 11_{10}

Convertire da una base qualsiasi a decimale è sempre questo: somma pesata. Vale identico in base 8 (pesi 8n8^n) e in base 16 (pesi 16n16^n, con le cifre A–F che valgono 10–15).

Da decimale a binario: divisioni successive

Si divide ripetutamente per 2 tenendo i resti, e si legge dal basso verso l’alto:

25:2=12resto 112:2=6  resto 06:2=3  resto 03:2=1  resto 11:2=0  resto 12510=110012\begin{aligned} 25 : 2 &= 12 \quad \text{resto } 1 \\ 12 : 2 &= 6 \quad\; \text{resto } 0 \\ 6 : 2 &= 3 \quad\; \text{resto } 0 \\ 3 : 2 &= 1 \quad\; \text{resto } 1 \\ 1 : 2 &= 0 \quad\; \text{resto } 1 \end{aligned} \qquad\Longrightarrow\qquad 25_{10} = 11001_2

I resti si leggono dall’ultimo al primo, cioè dal basso verso l’alto. Letti nell’ordine in cui escono darebbero 100112=1910011_2 = 19, che è un altro numero.

Controllo in cinque secondi: riconverti con la somma pesata. 16+8+0+0+1=2516 + 8 + 0 + 0 + 1 = 25

Ottale ed esadecimale: la scorciatoia

Qui c’è un regalo: 8=238 = 2^3 e 16=2416 = 2^4, quindi una cifra ottale vale esattamente tre bit e una cifra esadecimale esattamente quattro. Non serve passare dal decimale: basta raggruppare i bit partendo da destra.

1101D  011062=D6160113  0102  11062=3268\underbrace{1101}_{\text{D}}\;\underbrace{0110}_{6} {}_2 = \text{D6}_{16} \qquad\qquad \underbrace{011}_{3}\;\underbrace{010}_{2}\;\underbrace{110}_{6} {}_2 = 326_8

Se i bit non bastano a completare il gruppo più a sinistra, si aggiungono zeri davanti — non cambiano il valore, come lo zero in 007007.

Fra basi che sono potenze di 2 si passa raggruppando i bit, mai attraverso il decimale: 4 bit per una cifra esadecimale, 3 per una ottale. Il decimale serve solo quando una delle due basi non è potenza di 2.

Bit, byte e multipli

Un bit è una cifra binaria. Otto bit formano un byte, che può quindi rappresentare 28=2562^8 = 256 valori diversi (da 0 a 255).

In generale, con nn bit si rappresentano 2n2^n configurazioni: 10 bit → 1024, 16 bit → 65 536.

I multipli del byte hanno due significati diversi, ed è una delle poche ambiguità reali dell’informatica:

simbolonomevalore
kBkilobyte103=100010^3 = 1000 byte
KiBkibibyte210=10242^{10} = 1024 byte

I produttori di dischi usano la prima (un disco “da 1 TB” ha 101210^{12} byte), i sistemi operativi spesso la seconda: per questo un disco da 1 TB “diventa” 931 GiB una volta collegato. Non manca niente — sono due unità diverse con lo stesso nome parlato.

Addizione binaria

Funziona come in decimale, con il riporto: l’unica differenza è che si riporta già a 2, non a 10.

0+0=00+1=11+0=11+1=10  (cioeˋ 0 con riporto di 1)0+0 = 0 \qquad 0+1 = 1 \qquad 1+0 = 1 \qquad 1+1 = 10 \;\text{(cioè 0 con riporto di 1)} 1011+  011010001verifica: 11+6=17  \begin{array}{r} 1011 \\ +\; 0110 \\ \hline 10001 \end{array} \qquad\text{verifica: } 11 + 6 = 17 \;✓

Esercizio.

  1. Converti 1101011021101\,0110_2 in decimale.
  2. Converti 20010200_{10} in binario.
  3. Converti 1011101021011\,1010_2 in esadecimale e in ottale.
  4. Esegui 11012+101121101_2 + 1011_2 e verifica in decimale.
Mostra la soluzione

1. Somma pesata, tenendo solo i bit a 1 (pesi da destra: 1, 2, 4, 8, 16, 32, 64, 128):

110101102=128+64+16+4+2=214101101\,0110_2 = 128 + 64 + 16 + 4 + 2 = 214_{10}

2. Divisioni successive per 2, resti letti dal basso:

200:2=100  0100:2=50      050:2=25      025:2=12      112:2=6          06:2=3          03:2=1          11:2=0          120010=110010002\begin{aligned} 200 : 2 &= 100 \;\text{r } 0 \\ 100 : 2 &= 50 \;\;\;\text{r } 0 \\ 50 : 2 &= 25 \;\;\;\text{r } 0 \\ 25 : 2 &= 12 \;\;\;\text{r } 1 \\ 12 : 2 &= 6 \;\;\;\;\;\text{r } 0 \\ 6 : 2 &= 3 \;\;\;\;\;\text{r } 0 \\ 3 : 2 &= 1 \;\;\;\;\;\text{r } 1 \\ 1 : 2 &= 0 \;\;\;\;\;\text{r } 1 \end{aligned} \qquad\Longrightarrow\qquad 200_{10} = 1100\,1000_2

Verifica: 128+64+8=200128 + 64 + 8 = 200

3. Raggruppo, senza passare dal decimale. A quattro bit per l’esadecimale:

1011B  1010A=BA16\underbrace{1011}_{\text{B}}\;\underbrace{1010}_{\text{A}} = \text{BA}_{16}

A tre bit per l’ottale, aggiungendo uno zero davanti per completare il gruppo più a sinistra:

0102  1117  0102=2728\underbrace{010}_{2}\;\underbrace{111}_{7}\;\underbrace{010}_{2} = 272_8

4. Addizione con riporto:

1101+  101111000\begin{array}{r} 1101 \\ +\; 1011 \\ \hline 11000 \end{array}

Verifica. 13+11=2413 + 11 = 24, e 110002=16+8=2411000_2 = 16 + 8 = 24 ✓ — nota che il risultato ha cinque cifre: sommando due numeri a 4 bit si può sforare, ed è esattamente il motivo per cui nei circuiti reali si parla di overflow.