Dal Morse a Matrix: Cos'è la Codifica?
Immaginate di vedere sullo schermo di un computer la stringa 01010. Cosa significa? Potrebbe essere la lettera "A". Potrebbe essere il numero 10. Potrebbe essere un pixel di colore rosso, o magari il numero negativo -27. Essendo il computer in grado di elaborare soltanto zeri e uno, come fa a capire cosa rappresenta davvero quella sequenza? La risposta è magica e si chiama Codifica.
La codifica è, fondamentalmente, una traduzione. È l'atto di passare dagli elementi di un alfabeto di partenza agli elementi di un alfabeto di arrivo usando delle regole ben precise.
Prendiamo il famoso Codice Morse. L'alfabeto di partenza è composto solo da due simboli: il punto e la linea. L'alfabeto di arrivo sono le lettere dell'alfabeto (A, B, C...). Se ricevo "punto spazio", vado a leggere una tabella di traduzione e scopro che significa la lettera "A". Ho appena applicato una codifica!
Per il testo (come le lettere o i segni di punteggiatura), il computer usa proprio delle enormi tabelle di traduzione: qualcuno ha deciso e scritto in una tabella che a una determinata sequenza di 0 e 1 corrisponde la lettera 'A', a un'altra corrisponde il simbolo dell'euro, e così via.
Il Sistema Posizionale: perché un 9 non vale sempre 9
Ma cosa succede se voglio tradurre un numero? Non posso creare una tabella fissa per tutti i numeri del mondo, perché i numeri sono infiniti! La tabella non finirebbe mai. Per i numeri non serve una tabella, ci vuole una regola matematica universale.
Prima di capire come ragiona il computer, guardiamo come ragioniamo noi. Noi umani usiamo il Sistema Decimale, che ha 10 simboli (da 0 a 9). Se io scrivo il numero 732, perché il 7 "pesa" di più del 9, anche se 7 è un numero più piccolo? Perché il nostro sistema è posizionale: il valore di una cifra non dipende solo dalla sua forma, ma dalla posizione in cui si trova all'interno del numero.
In 732, il 2 occupa la posizione zero (le unità), il 3 occupa la posizione uno (le decine), e il 7 occupa la posizione due (le centinaia). Matematicamente, senza accorgercene, stiamo moltiplicando ogni cifra per una potenza della nostra base (il 10). Stiamo facendo questo calcolo nascosto:
(2 × 100) + (3 × 101) + (7 × 102).
Il Codice Binario e la conversione
Il computer non ha 10 dita. Usa il Sistema Binario (Base 2), che ha soltanto due simboli: 0 e 1. Anche il sistema binario, però, è rigorosamente posizionale. Esattamente come nel sistema decimale usiamo le potenze del 10, qui useremo le potenze del 2.
Quando scriviamo un numero, per non confonderci tra un sistema e l'altro, mettiamo la base in piccolo a destra. 10110 significa centouno (in decimale). 1012 è un numero binario, che vale molto meno!
Come facciamo a tradurre (codificare) il numero binario 11012 nel nostro sistema decimale per capire quanto vale? Basta mettere sotto a ogni cifra la corrispondente potenza del 2, partendo sempre da destra con la potenza zero (20).
- Posizione 0 (la prima cifra a destra): troviamo un 1. Moltiplichiamo 1 × 20 (che fa 1) = 1
- Posizione 1: troviamo uno 0. Lo moltiplichiamo 0 × 21 (che fa 2) = 0
- Posizione 2: troviamo un 1. Moltiplichiamo 1 × 22 (che fa 4) = 4
- Posizione 3 (la cifra a sinistra): troviamo un 1. Moltiplichiamo 1 × 23 (che fa 8) = 8
Ora sommiamo i risultati ottenuti: 1 + 0 + 4 + 8 = 13. Ecco svelato il mistero: 11012 è il numero 13! Tutto quello che serve è contare le posizioni da destra verso sinistra e sommare le potenze del due nei punti in cui c'è il simbolo 1.
Questo calcolo, che noi abbiamo fatto a mano sulla lavagna con molta lentezza, il computer lo fa alla velocità della luce, miliardi di volte al secondo, per poterci far vedere a schermo i colori, leggere i testi, riprodurre i video e la musica.