
Il linguaggio binario e i sistemi di numerazione
Introduzione: perché il binario?
Immagina un corridoio pieno di lampadine. Ogni lampadina può essere accesa (1) o spenta (0). Con una sola lampadina puoi indicare due stati: acceso/spento. Con due lampadine hai quattro combinazioni (00, 01, 10, 11). Questo è il cuore del linguaggio digitale: segnali ON/OFF, sì/no, 1/0. I computer parlano così perché i componenti elettronici — transistor, porte logiche — funzionano scegliendo tra due stati.
Concetti teorici essenziali
- Bit = binary digit = 0 o 1.
- Posizione in un numero binario corrisponde a una potenza di 2. Da destra a sinistra: 2⁰, 2¹, 2², 2³, …
- Byte = 8 bit. Nibble = 4 bit. Parole (word) dipendono dall’architettura (16, 32, 64 bit).
- Range valori: con n bit si rappresentano 0 … (2ⁿ − 1) per numeri senza segno.
- Due-complemento = convenzione per rappresentare numeri negativi (vedremo come funziona).
Tabella rapida potenze di 2 (utile come "tassello" in classe)
- 2⁰ = 1
- 2¹ = 2
- 2² = 4
- 2³ = 8
- 2⁴ = 16
- 2⁵ = 32
- 2⁶ = 64
- 2⁷ = 128
- 2⁸ = 256
Conversioni — esempi passo-passo (eseguiti digit-by-digit)
A) Da binario a decimale — Esempio: 1011
Leggiamo da sinistra (ma calcoliamo per posizione da destra a sinistra):
- cifre (da sinistra a destra): 1 0 1 1
- posizioni (da destra): 2³, 2², 2¹, 2⁰ = 8, 4, 2, 1
Calcolo: - 1 × 2³ = 1 × 8 = 8
- 0 × 2² = 0 × 4 = 0
- 1 × 2¹ = 1 × 2 = 2
- 1 × 2⁰ = 1 × 1 = 1
Somma = 8 + 0 + 2 + 1 = 11 (decimale).
B) Da decimale a binario — Metodo divisione per 2 (resti)
Esempio: convertiamo 156 in binario (mostro ogni divisione: quoziente e resto).
- 156 ÷ 2 = 78 resto 0
- 78 ÷ 2 = 39 resto 0
- 39 ÷ 2 = 19 resto 1
- 19 ÷ 2 = 9 resto 1
- 9 ÷ 2 = 4 resto 1
- 4 ÷ 2 = 2 resto 0
- 2 ÷ 2 = 1 resto 0
- 1 ÷ 2 = 0 resto 1 (qui terminiamo)
Ora leggiamo i resti dal basso verso l’alto: 1 0 0 1 1 1 0 0 → 10011100 (binario). Verifica: 128 + 0 + 0 + 16 + 8 + 4 + 0 + 0 = 156.
C) Da decimale a esadecimale (base 16) — esempio: 255
Divisione per 16:
- 255 ÷ 16 = 15 resto 15 → 15 in esadecimale è F
- 15 ÷ 16 = 0 resto 15 → F
Quindi 255 decimale = FF (esadecimale).
Codifica di caratteri: ASCII (pratica)
I computer memorizzano lettere come numeri. ASCII standard associa ad esempio:
"A"→ 65 → in binario01000001(8 bit).
Esempio pratico: trasformiamo la parola Tom (passo-passo):- T = 84 → dividendo per 2 otteniamo binario:
01010100 - o = 111 → binario:
01101111 - m = 109 → binario:
01101101
Nome in binario: 01010100 01101111 01101101.
(Se vuoi, puoi fornire la tabella ASCII da stampare; per la lezione basta mostrare qualche esempio e far convertire i padroni di casa.)
Operazioni binarie — esempi svolti
A) Addizione binaria — esempio: 1011 + 1101
Allineiamo a destra:
1011 (11 decimale)
+ 1101 (13 decimale)
------
Sommiamo colonna per colonna da destra:
- colonna 0 (2⁰): 1 + 1 = 2 → scrivo 0, porto 1 (carry).
- colonna 1 (2¹): 1 + 0 + carry1 = 2 → scrivo 0, porto 1.
- colonna 2 (2²): 0 + 1 + carry1 = 2 → scrivo 0, porto 1.
- colonna 3 (2³): 1 + 1 + carry1 = 3 → 3 in binario è 1 con carry 1 (perché 3 = 1 + 2). Scrivo 1, porto 1.
- carry finale = 1 → lo scrivo a sinistra.
Risultato: 11000.
Verifica in decimale: 11 + 13 = 24 → 11000 in binario = 16 + 8 = 24. Perfetto.
B) Sottrazione con due-complemento — esempio: 13 − 5 (usando 8 bit)
Rappresentazioni (8 bit):
- 13 =
00001101 - 5 =
00000101
Passi per ottenere −5 in due-complemento:
- inverti tutti i bit di 5:
11111010 - aggiungi 1:
11111010+1=11111011(questo è il −5 in due-complemento)
Ora addiziona 13 + (−5):
00001101
+ 11111011
= 00001000 (con carry che scarta)
Risultato 00001000 = 8. Corretto.
C) Esempio di overflow (8 bit): 130 + 140
- 130 =
10000010 - 140 =
10001100
Addizione: - Somma aritmetica: 130 + 140 = 270
- In 8 bit il massimo è 255 → abbiamo overflow. Se consideriamo solo gli 8 bit di basso peso otteniamo
00001110= 14.
Spiegazione: la somma genera un carry oltre l’ottavo bit, perso se si lavora su 8 bit senza segnalazione → valore risultante = 270 mod 256 = 14.
Esercizi svolti
Esercizio 1 — Converti 19 in binario (passi)
Divisioni:
- 19 ÷ 2 = 9 r 1
- 9 ÷ 2 = 4 r 1
- 4 ÷ 2 = 2 r 0
- 2 ÷ 2 = 1 r 0
- 1 ÷ 2 = 0 r 1
Rivolgi i resti: 10011. Verifica: 16 + 0 + 0 + 2 + 1 = 19.
Esercizio 2 — Usa ASCII: quale è il binario di "C"?
"C" = 67 decimale. Convertiamo:
- 67 ÷ 2 = 33 r 1
- 33 ÷ 2 = 16 r 1
- 16 ÷ 2 = 8 r 0
- 8 ÷ 2 = 4 r 0
- 4 ÷ 2 = 2 r 0
- 2 ÷ 2 = 1 r 0
- 1 ÷ 2 = 0 r 1
Resta:1000011. Con 8 bit (prefisso aggiunto): 01000011.
Esercizio 3 — Addizione: 0110 + 0011
- 0110 (6) + 0011 (3) = 1001 (9). Passaggi: colonna per colonna, portando eventuali carry (qui nessuno tranne al limite).
Test finale (autovalutazione)
1. Converti in binario:
a) 6 →
b) 13 →
c) 31 →
2. Qual è il valore decimale di 10110?
a) 22 b) 23 c) 21 d) 24
3. Qual è il codice ASCII della lettera C?
a) 65 b) 67 c) 66 d) 68
4. In esadecimale, qual è il simbolo per il valore decimale 15?
a) E b) D c) F d) G
5. Quale rappresentazione binaria è corretta per il numero 9?
a) 1001 b) 1011 c) 0110 d) 1111
10) Soluzioni del test — con spiegazioni passo-passo
1. Converti in binario
a) 6 → divisioni: 6 ÷ 2 = 3 r0; 3 ÷ 2 = 1 r1; 1 ÷ 2 = 0 r1 → leggendo i resti: 110.
b) 13 → 13 ÷ 2 = 6 r1; 6 ÷ 2 = 3 r0; 3 ÷ 2 = 1 r1; 1 ÷ 2 = 0 r1 → resti: 1101.
c) 31 → 31 ÷ 2 = 15 r1; 15 ÷ 2 = 7 r1; 7 ÷ 2 = 3 r1; 3 ÷ 2 = 1 r1; 1 ÷ 2 = 0 r1 → 11111.
2. 10110 → valore decimale
Calcolo posizioni: da destra 2⁰=1, 2¹=2, 2²=4, 2³=8, 2⁴=16
Cifre: 1·16 + 0·8 + 1·4 + 1·2 + 0·1 = 16 + 0 + 4 + 2 + 0 = 22 → risposta a).
3. ASCII di C
A è 65, B 66, C 67 → risposta b). (In binario C = 01000011.)
4. Valore decimale 15 in esadecimale
In esadecimale i simboli 10–15 corrispondono a A–F; quindi 15 → F → risposta c).
5. Rappresentazione binaria del 9
9 = 8 + 1 = 2³ + 2⁰ → cifre 1001 → risposta a).
Nessun commento:
Posta un commento