Tutorials - Informatica

 

Decimali, Binari & C

L'Esadecimale


 

Ma lasciamo il pianeta Scorpio e il dr. XvYzz e risaliamo sulla nostra AAA (Astronave Analitica Algebrica), per passare sul pianeta HEX, sedicesimo pianeta della stella XVI, dove gli abitanti hanno due mani con otto dita per ogni mano

Il loro equivalente del nostro matematico indù procede nello stesso modo: scava la prima buca, ci mette sassolini fino a 15, poi svuota la buca e ne mette uno nella seconda, che ora indica "una volta 16 dita". E così via.

Il suo sistema, basato sul sedici, si chiama esadecimale, per gli amici abbreviato in hex o HEX (da hexadecimal).
Quindi:

 

il sistema esadecimale è un sistema posizionale 
basato sul 16.

 

La sua tabella sarà questa :

ecc quinta
colonna
quarta
colonna
terza
colonna
seconda
 colonna
prima
 colonna
ecc qui la cifra
vale per 65536
qui la cifra
vale per 4096
qui la cifra
vale per 256
qui la cifra 
vale per 16
qui la cifra
 vale unità
ecc  cifra * 65536 cifra * 4096 cifra * 256 cifra * 16 cifra * 1
ecc cifra * 16^4 cifra * 16^3 cifra * 16^2 cifra * 16^1 cifra * 1*16^0

 

Ora il passaggio da una colonna alla successiva va secondo le potenze di 16, che è la base del sistema esadecimale. 

Quando in esadecimale scrivo:

125base16

 

intendo :

Numero hex Cifra  Significato  Valore Valore decimale
125 
= 5 volte la prima colonna  = 5 dita = 5 * 1 = 5
2 = 2 volte la seconda colonna = 2 volte le 16 dita = 2 * 16 = 32
1 = 1 volta la terza colonna = 1 volta 16 volte le 16 dita = 1 * 16 * 16 = 256
5 + 32 + 256 = 293

 

che posso anche esprimere come:

125base16 = 293base10

 

Se volete, potete esercitarvi a scrivere numeri esadecimali, ma prima vi occorre qualcos'altro.

Il nostro matematico del pianeta HEX usa 16 cifre e, per i buoni rapporti intergalattici, sceglie di usare le nostre cifre arabo-indiane. 

Ma c'è un problema: queste cifre sono solo 10 (da 0 a 9). E le altre 6 ? 

Beh, il nostro è un tipo ingegnoso e per le sei che mancano usa le prime sei lettere dell' alfabeto, da A a F. (abbiamo visto all' inizio che usare lettere come numeri non è una cosa campata in aria, ma di una pratica esistente da millenni. Quindi, niente di strano).

Dunque, i numeri esadecimali saranno scritti con un miscuglio di simbolo numerici e letterali :

 

Decimale Binario Ottale Esadecimale
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 11 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
17 10001 21 11

 

Se facciamo mente locale alle buche e ai sassolini, la prima buca è piena di 15 sassolini, numero rappresentato dalla cifra F.
Ora conto uno in più : svuoto la prima buca e aggiungo un sassolino alla seconda buca, che vuol dire "contate una volta le sedici dita"; e questo lo rappresento con 10, un sassolino nella seconda colonna, zero sassolini nella prima. 
Avanzando il conteggio, quando ho quindici sassolini nella prima e ne devo aggiungere un' altro, svuoto la buca, aggiungo in sassolino nella seconda e da 1F passo a 20: due volte 16 dita, più zero dita.

 

Avendo un elevato numero di cifre, il sistema esadecimale da origine a scritture compatte
Ad esempio 2010 decimale diventa 7DA e 1211789 diventa 127D8D.

 

Il sistema esadecimale è 

  • un sistema di numerazione: cifre rappresentano numero secondo certe regole
  • è un sistema di numerazione posizionale: le cifre hanno valore diverso a seconda della posizione nel numero
  • è basato sul sedici (ha base 16), ovvero la radice è esadecimale: tra colonna e colonna la base della potenza è 16.

 

Possiamo prendere un numero esadecimale, ad esempio AA  e dire che:

 

AA => AAbase16

 

che, convertito in decimale:

AAbase16 = (A * 161) + (A * 160) = (10 * 16) + (10 * 1) =  170base10

 

Ora una tabella per il numero 10101010base16:

colonna 8 7 6 5 4 3 2 1
esponente 7 6 5 4 3 2 1 0
moltiplicatore 167 166 165 164 163 162 161 160
cifra del numero 1 0 1 0 1 0 1 0
valore 1*167 0*166 1*165 0*164 1*163 0*16 1*161 0*160

 

Dato che:

Colonna Posizione Valore Moltiplicatore cifra

Potenza

8 7 Gruppi di 268435456 268435456 167
7 6 Gruppi di 16777216 16777216 166
6 5 Gruppi di 1048576 1048576 165
5 4 Gruppi di 65536 65536 164
4 3 Gruppi di 4096 4096 163
3 2 Gruppi di 156 156 162
2 1 Gruppi di 16 16 161
1 0 Unità 1 160

Nella tabella qui sopra osserviamo che non ha più senso, in esadecimale, parlare di decine o centinaia: decine, centinaia, migliaia, ecc. fanno riferimento a potenze di 10. Qui abbiamo a che fare con potenze di 16. Solo sul numero convertito a decimale possiamo tornare a parlare di decine, ecc.

Chiaro ? Se non lo fosse, riprendete dall' inizio con più calma...

 

Una tabellina di somme con le cifre esadecimali:

base16 - Somma
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 2 3 4 5 6 7 8 9 A B C D E F 10
2 0 3 4 5 6 7 8 9 A B C D E F 10 11
3 0 4 5 6 7 8 9 A B C D E F 10 11 12
4 0 5 6 7 8 9 A B C D E F 10 11 12 13
5 0 6 7 8 9 A B C D E F 10 11 12 13 14
6 0 7 8 9 A B C D E F 10 11 12 13 14 15
7 0 8 9 A B C D E F 10 11 12 13 14 15 16
8 0 9 A B C D E F 10 11 12 13 14 15 16 17
9 0 A B C D E F 10 11 12 13 14 15 16 17 18
A 0 B C D E F 10 11 12 13 14 15 16 17 18 19
B 0 C D E F 10 11 12 13 14 15 16 17 18 19 1A
C 0 D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D 0 E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E 0 F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F 0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E

 

e di prodotti:

base16 - Moltiplicazione
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1

 

Ricordare che stiamo contando in hex e utilizziamo la numerazione esadecimale !!

 

Ed è semplice, se è stato compreso quanti finora detto, che:

Abase16 + Abase16 = 14base16

14base16  =  1 × 161 + 4 × 160 = 16 + 4 = 20base 10

 

e:

9base16 * 9base16 = 51base16

51base16  =  5 × 161 + 1 × 160 = 80 + 1 = 81base 10

 

Ovviamente posso convertire l' esadecimale in decimale, ottale, binario e viceversa.
Anche qui, una volta compreso il principio, però non esiste alcuna necessità di calcolare a mano le conversioni : Calcolatrice fa questo per noi. 

L' importante è aver compreso il principio e saperlo applicare dove e quando serve. Comunque, qualche esempio non guasta, ma lo vediamo più avanti.
Piuttosto che fare conversioni, affrontiamo un altro passaggio importante.


 

 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 18/10/10.