Il codice binario
La prima cosa da fare, per poter capire l'informatica, è quella di capire su quale linguaggio essa si basi.
Vi sono già moltissime pagine disponibili in Internet, le quali trattano diffusamente del codice binario, io intendo utilizzare un linguaggio colloquiale, sperando che anche coloro i quali fino a questo momento non ci sono riusciti, possano comprendere questo "strano modo di contare".
Chiunque è in grado di contare nel modo solito, ovvero basandosi sul sistema decimale, ma perchè usiamo proprio questo metodo?
Credo di poter affermare che l'uomo, in qualsiasi tempo ed in qualsiasi luogo, abbia trovato sempre molto semplice contare gli oggetti utilizzando uno strumento sempre a portata di.....MANO !!
Infatti, sto parlando delle dita!!
Per esempio: il numero 25, il quale, come tutti sappiamo, rappresenta 2 decine e 5 unità, vuol dire anche che, per contare tante "cose" quante sono rappresentate dal numero 25, bisogna "alzare" tutte le dita delle mani per due volte e poi "alzare" ancora cinque dita.
Ogni nuova posizione, andando da destra verso sinistra, nel numero indica semplicemente quante volte bisogna contare completamente tutte le cifre disponibili per la posizione immediatamente a destra. La parola chiave per comprendere questo concetto è "tutte le cifre disponibili".
Nel sistema di numerazione decimale le cifre disponibili sono,ovviamente, 10: esse sono 1,2,3,4,5,6,7,8,9,0 (ho messo apposta lo zero in fondo, per rendere più chiara la spiegazione).
Quindi si dice che 10 è la base della numerazione (ed è quindi anche la base per le operazioni di elevamento a potenza che vedremo tra un attimo)
Così il numero 15 equivale a dire che si sono contate tutte le cifre una volta e poi ancora cinque cifre (la quantità totale, come tutti sanno, è quindi [1 x 10 + 5 x 1] cioè anche [1 decina + 5 unità]).
Prendiamo ora come esempio un numero un po' più complicato, e ripetiamo il ragionamento: scegliamo 1296.
Intanto vediamolo scomposto:
posizione |
4° |
3° |
2° |
1° |
cifra |
1 |
2 |
9 |
6 |
significato |
migliaia |
centinaia |
decine |
unità |
Potenza di 10 |
103 |
102 |
101 |
100 |
La tabella qui sopra è un classico, ma io vorrei rappresentare il numero 1296 utilizzando tutte le persone che servono per "contarlo".
Ecco quindi a voi: Marco, Carlo, Dario, Ugo
Le mani di Ugo contano da 1 a 1296, mentre lo fa i suoi amici tengono traccia del conteggio in questo modo:
Dario alza un dito ogni volta che Ugo ha finito una serie di dieci, e ricominciato.
[Quando Ugo ha alzato tutte le dita, vuol dire che ha contato 10, allora le abbassa subito tutte, e Dario ne alza una, questo è importante: NESSUNO resta con tutte le dita alzate]
Carlo alza un dito ogni volta che Dario ha finito una serie di dieci, e ricominciato.
Marco alza un dito ogni volta che Carlo ha finito una serie di dieci, e ricominciato.
Inutile dirvi che il risultato finale sarà questo:
Marco |
Carlo |
Dario |
Ugo |
1 dito alzato |
2 dita alzate |
9 dita alzate |
6 dita alzate |
Bene, ma se questi amici avessero solo DUE dita ??
Ecco quello che succederebbe, per contare, ad esempio, il numero 25:
[Ricordiamo che, quando si conta in questo modo, chi sta davvero contando tutto è la persona più a destra {cioè Ugo}, e quando uno degli amici alza TUTTE le sue dita, quello che avviene è che le abbassa tutte, e chi gli sta vicino a sinistra, alza un dito, per segnalare che il suo amico ha terminato una serie ed ha ricominciato]
Il nostro UGO, con sole due dita, quante volte le alza tutte?
Ovviamente 25 diviso 2=12, col resto di 1
Allora Dario dovrebbe contare il numero di volte che Ugo ha alzato tutte le dita, ma anche lui ha solo due dita, quindi le alzerà tutte per 12 diviso 2= 6 volte, col resto di ZERO
Carlo deve contare le 6 volte che Dario ha alzato tutte le sue dita: avendone, anche lui, solo due, le alzerà 6 diviso 2 = 3 volte, col resto di ZERO
Marco deve contare le 3 volte che Carlo ha alzato tutte le sue dita, quindi alzerà tutte le sue dita 1 volta, col resto di 1, nel senso che alzerà ancora un dito, che gli rimane alzato.
Serve un nuovo amico: Fabio, il quale conta le volte che Marco ha ricominciato il conteggio, cioè una sola volta: Fabio resterà quindi con un solo dito alzato.
Fabio |
Marco |
Carlo |
Dario |
Ugo |
amici |
1 dito alzato |
1 dito alzato |
nessun dito alzato |
nessun dito alzato |
1 dito alzato |
dita |
1 |
1 |
0 |
0 |
1 |
Cifre binarie |
24 |
23 |
22 |
21 |
20 |
potenze di 2 |
1 x 24 |
1 x 23 |
0 x 22 |
0 x 21 |
1 x 20 |
Somma=25 |
Il numero 25, espresso in codice binario, è 11001.
La base della numerazione è 2.
Esattamente come per la numerazione decimale, il significato del numero 11001 è il seguente (iniziando dalla posizione più a destra, la posizione UNO, che è la posizione delle unità, cioè della potenza ZERO della base scelta per il conteggio):
1 x 20 = 1 x 1 = 1
0 x 21 = 0 x 2 = 0
0 x 22 = 0 x 4 = 0
1 x 23 = 1 x 8 = 8
1 x 24 = 1 x 16 = 16
e... 1+8+16= 25 !!
La numerazione in codice binario ha solo DUE cifre, per formare tutti i numeri, esse sono "0" ed "1".
Vediamo ora il metodo un po' meglio:
Per trasformare il numero 324 da base 10 (decimale) a base 2 (binario) si procede per divisioni successive per la base:
passaggio |
numero |
diviso per |
fa |
col resto di |
|
1 |
324 |
2 |
162 |
0 |
(questa è la cifra più a DESTRA) |
2 |
162 |
2 |
81 |
0 |
|
3 |
81 |
2 |
40 |
1 |
|
4 |
40 |
2 |
20 |
0 |
|
5 |
20 |
2 |
10 |
0 |
|
6 |
10 |
2 |
5 |
0 |
|
7 |
5 |
2 |
2 |
1 |
|
8 |
2 |
2 |
1 |
0 |
|
9 |
1 |
2 |
0 |
1 |
Quindi 324 in base 10 si scrive come 101000100 in base 2 !!
Questo ovviamente vale per qualsiasi base.
Se la base fosse 16 (codice o numerazione esadecimale), si usa lo stesso metodo, solo che essendoci solo 10 cifre, ci servono altri 6 SIMBOLI per questa nuova numerazione: per convenzione si usano le lettere maiuscole A,B,C,D,E,F
Quindi una A in numerazione esadecimale vale 10, una B vale 11... e così via fino alla F che vale 15. E tutto torna... (Infatti dividendo per 16 posso ottenere un resto che va da 0 a 15)