Come funziona il sistema binario
Ti sei mai chiesto come il tuo computer riesca a memorizzare, elaborare e trasmettere tutte le informazioni in modo così veloce e preciso? Magari hai sentito parlare del sistema binario, ma non sai esattamente di cosa si tratti e perché sia così importante… Beh, se davvero sei curioso di scoprire i “retroscena” della “vita” del tuo PC, sei proprio nel posto giusto.
In questo articolo, ti spiegherò in modo semplice e chiaro come funziona il sistema binario. Vedremo insieme cos'è, perché è così fondamentale e come viene utilizzato per rappresentare e gestire i dati all'interno dei dispositivi elettronici. Non preoccuparti se non hai conoscenze avanzate in materia di matematica e/o informatica: ti guiderò passo passo con esempi pratici e facili da comprendere.
Per prima cosa, ti confermo che sì, il dispositivo che hai davanti “si regge” proprio su una struttura di 0 e 1. Una struttura complessa, per certi versi, ma il meccanismo alla base è anche estremamente banale. Confuso? Non importa: sono sicuro che avrai tutto più chiaro dopo il primo capitolo. Buona lettura!
Indice
Cos'è il sistema binario in informatica
Il sistema binario è un sistema di numerazione che utilizza solo due cifre: 0 e 1. Certamente conosci il sistema di numerazione decimale, con dieci cifre – per l'appunto –, che vanno dallo 0 al 9; ecco, quel sistema è anche detto “in base 10”, mentre il sistema binario è anche detto “in base 2”.
Esso nasce formalmente con Leibniz, filosofo e matematico tedesco, nel 1679. Fu lui il primo a dimostrare come tutti i numeri potessero essere rappresentati utilizzando solo due simboli (gli stessi 0 e 1).
Più tardi, nel XIX secolo, il britannico George Boole sviluppò l'algebra booleana, una forma di matematica con le variabili binarie (vero/falso, 1/0) a esprimere operazioni logiche.
L'algebra booleana è stata cruciale per lo sviluppo successivo dei PC e dei loro circuiti. Come, concretamente? Beh, pensa di voler tu stesso progettare un circuito per controllare l'accensione di una lampadina. La lampadina è collegata a due interruttori, che – entrambi chiusi – danno come risultato l'accensione della stessa.
Interruttore aperto = 0. Interruttore chiuso = 1. Questi i valori che possono assumere le due variabili booleane (interruttore A e interruttore B). Moltiplicate (A x B), esse equivalgono all'operazione logica AND.
Se almeno uno dei due interruttori è aperto (0), il risultato dell'operazione è 0. Di conseguenza, la lampadina rimane spenta. Quando entrambi sono uguali a 1, invece, significa che sono entrambi chiusi e possono dare vita all'accensione della lampadina.
Boole a parte, forme primitive di sistemi binari si riscontrano già nell'antico Egitto e nell'antica Cina. In alcuni papiri egizi, in particolare, si trovano i numeri trascritti come somme di potenze di due, un modo semplice e conciso per rappresentarli con un totale limitato di simboli (specie se i numeri in questione erano grandi).
Anche in alcuni testi cinesi, come I nove capitoli sull'arte matematica (II secolo a.C.) compaiono tracce di un sistema simile. Di fatto, i cinesi usavano steli di giada intagliati a rappresentare diverse potenze di due (ad esempio, una stele con una tacca rappresentava la potenza di due alla prima). Come prima, questo metodo di rappresentazione di numeri grandi con un numero limitato di oggetti fisici risultava piuttosto ingegnoso.
Ai fini dell'informatica, attualmente, il sistema di numerazione binario è utile per rappresentare/gestire/memorizzare dati e istruzioni in una forma semplice, comprensibile da un computer. In altre parole, tutti i tipi di dati (numeri, testo, immagini, suoni, video) sono rappresentati in sequenze di bit, laddove per “bit” s'intende l'unità fondamentale del sistema binario stesso, che può assumere o il valore di 0 o il valore di 1.
Come si è detto, anche le istruzioni, oltre ai dati, sono codificate in binario, una “lingua” facilmente comprensibile dai processori.
I circuiti all'interno dei processori operano su stati di tensione, ed è molto più comodo e affidabile progettare circuiti che distinguano solo due stati (alta/bassa tensione; 0 o 1) piuttosto che più stati.
Supponiamo, invece, di volerci basare per forza sul sistema decimale. Bene, i circuiti dovrebbero distinguere tra dieci livelli di tensione diversi! È vero che questa soluzione ci permetterebbe – tra le altre cose – di rappresentare più informazioni con meno cifre, ma comunque risulterebbe più difficile da implementare e più dispendiosa.
Tra gli altri vantaggi, il sistema binario si allinea perfettamente alla logica booleana, perché entrambi utilizzano due stati distinti. In binario – ormai l'abbiamo imparato –, tali stati sono 1 e 0. Nella logica booleana, invece, sono vero e falso.
Le operazioni logiche fondamentali (AND, OR, NOT…) vengono eseguite manipolando direttamente i singoli 0 e 1. Chi le esegue? Beh, si tratta delle “porte logiche”, ovvero le componenti elettroniche “base” dei circuiti, quelle incaricate proprio di restituire un output dietro un input.
Come funziona il sistema numerico binario
Dopo aver visto cos'è, e cos'è ai fini informatici, vediamo come funziona il sistema di numerazione binario.
Prima, però, conviene soffermarci su come funziona un sistema binario in generale.
Semplicemente, la rappresentazione dei numeri funziona così. La cifra più a destra, in una sequenza, è la prima da prendere in considerazione. Trattandosi di un sistema in base 2, ogni posizione, quindi ogni 0 o 1, rappresenta una potenza di 2 (allo stesso modo, il nostro sistema decimale utilizza potenze di 10).
La prima cifra da destra equivale a 20. La seconda (appena più a sinistra) è 21. La terza, 22; la quarta, 23 e così via.
Supponiamo di voler convertire il numero binario 1010. Come ti ho spiegato, si parte considerando la cifra più a destra, l'ultima, ovvero – in questo caso – lo 0.
- 0 equivale a 20. Per convertirlo in decimali, moltiplica: 0 x 20 = 0.
- 1 equivale a 21. 1 x 21 = 2.
- 0 equivale a 22. 0 x 22 = 0.
- 1 equivale a 23. 1 x 23 = 8.
Ora, sommiamo: 0 + 2 + 0 + 8 = 10. Dunque, il numero binario 1010, trascritto in decimali, è… 10!
Applicato ai computer, il sistema binario funziona convertendo tutti i dati e le istruzioni in sequenze di 0 e 1, che vengono poi memorizzate, elaborate ed eseguire dai circuiti elettronici.
Le sequenze, come abbiamo visto nel primo capitolo, prendono il nome di bit. Un bit è dunque la più piccola unità di dati di un computer.
Più semplicemente, un bit può essere raffigurato come un interruttore che può trovarsi in uno dei due stati: acceso (1) o spento (0).
All'interno dei circuiti, i bit vengono rappresentati attraverso stati fisici che corrispondono a due possibili valori (0 e 1 come “interruzione” e "conduzione). In ciò ha un ruolo cruciale il transistor, elemento fondamentale dei chip che agisce come un interruttore o amplificatore (in altre parole, può accendere o spegnere un segnale elettrico oppure aumentarne la potenza).
Si capisce dunque come i transistor possano essere configurati in modo da rappresentare i due stati di un bit.
Ma riprendiamo il discorso sull'unità di misura. I bit sono organizzati in gruppi più grandi (sequenze di 8 bit) chiamati byte. L'organizzazione dei dati nei computer prosegue attraverso i multipli del byte (kilobyte, megabyte, gigabyte, terabyte…), utilizzati per rappresentare quantità di dati più o meno grandi. In ogni caso, tutti i file (oltreché le operazioni che li riguardano) vengono letti dal computer come sequenze di 0 e 1 (sequenze più o meno lunghe).
Facciamo un esempio. Pensa a un'immagine digitale, alla foto di un paesaggio che hai salvata sul PC. A schermo viene restituita in tutta la sua complessità e ricchezza di dettagli, ma dal punto di vista del computer è solo una sequenza di 0 e 1. La lunghezza della sequenza dipende proprio dal “peso” dell'immagine, da quanto è “dettagliata”.
Ogni singolo pixel dell'immagine è rappresentato da un gruppo di byte che codificano le informazioni sul colore di quel pixel, come la quantità di rosso, verde e blu. Allo stesso modo, tutte le operazioni che coinvolgono l'immagine (la modifica, per esempio), vengono eseguite manipolando queste sequenze binarie.
È interessante anche notare come la compressione dei dati influisca sulla rappresentazione binaria delle immagini. Ad esempio, i file JPEG utilizzano una compressione lossy, che riduce la dimensione del file eliminando alcune informazioni. Questo significa che la sequenza binaria viene semplificata, riducendo il numero di bit utilizzati e portando a una perdita di qualità. Al contrario, i file PNG utilizzano una compressione lossless, che preserva tutte le informazioni originali. In termini binari, questo significa che la sequenza di 0 e 1 rimane completa e intatta, ma con una dimensione del file maggiore.
Autore
Salvatore Aranzulla
Salvatore Aranzulla è il blogger e divulgatore informatico più letto in Italia. Noto per aver scoperto delle vulnerabilità nei siti di Google e Microsoft. Collabora con riviste di informatica e cura la rubrica tecnologica del quotidiano Il Messaggero. È il fondatore di Aranzulla.it, uno dei trenta siti più visitati d'Italia, nel quale risponde con semplicità a migliaia di dubbi di tipo informatico. Ha pubblicato per Mondadori e Mondadori Informatica.