Il sistema numerico esadecimale (spesso abbreviato come esa o hex) è un sistema numerico posizionale in base 16, cioè che utilizza 16 simboli invece dei 10 del sistema numerico decimale tradizionale.
Per l'esadecimale si usano in genere simboli da 0 a 9 e poi le lettere da A a F, per un totale di 16 simboli.
Ecco una tabella che confronta le rappresentazioni binarie, esadecimali e decimali dei numeri fino a 15: bin hex dec bin hex dec0000 = 0 = 0 1000 = 8 = 8
0001 = 1 = 1 1001 = 9 = 9
0010 = 2 = 2 1010 = A = 10
0011 = 3 = 3 1011 = B = 11
0100 = 4 = 4 1100 = C = 12
0101 = 5 = 5 1101 = D = 13
0110 = 6 = 6 1110 = E = 14
0111 = 7 = 7 1111 = F = 15
Perciò il numero decimale 79, la cui rappresentazione binaria è 0100 1111, può essere scritto come 4F in esadecimale.
Il sistema esadecimale è molto usato in informatica, per la sua relazione diretta tra una cifra esadecimale e quattro cifre binarie.
È spesso usato come intermediario, oppure come sistema numerico a sé stante. Per esempio, è possibile esprimere un byte con esattamente due cifre esadecimali (invece che con 3 decimali, e lasciando gran parte dell'intervallo non utilizzato).
È interessante, infatti, notare come ogni cifra esadecimale corrisponda a un Nibble (vedi Tipo di dato), cioè a un numero binario di quattro cifre.
Ci sono numerosi modi per denotare un numero come esadecimale, usati in differenti linguaggi di programmazione:
Ada e VHDL racchiudono in numeri in "virgolette numeriche" che riportano anche la base, per esempio "16#5A3#" (Nota: Ada accetta questa notazione per tutte le basi dalla 2 alla 16, e per numeri sia interi che reali).
Il C e i linguaggi con una sintassi simile (come il Java) usano il prefisso '0x', per esempio "0x5A3".
Lo zero iniziale è presente perché i numeri devono iniziare con un carattere numerico, e la 'x' significa esadecimale (in caso di assenza della 'x', il numero è inteso come ottale.
Il Pascal e alcuni Assembly indicano l'esadecimale con il suffisso 'h' (se il numero inizia con una lettera, si usa anche il prefisso '0'), per esempio "0A3Ch", "5A3h".
Altri assembly (AT&T, Motorola) e alcune versioni di BASIC usano il prefisso '$', per esempio "$5A3".
Altre versioni del BASIC usano il prefisso "&h", per esempio "&h5A3".
Quando usano sistemi di numerazione diversi dalla base dieci, o numerali in basi multiple, i matematici scrivono la base come pedice del numero, pe esempio "5A316" oppure "5A3SEDICI".
Non esiste un singolo standard, perciò tutte le convenzioni elencate sopra vengono utilizzate, e a volte lo stesso articolo può contenere due convenzioni diverse.
Ciononostante, non si crea molta confusione perché tutte sono non ambigue.
La parola "esadecimale" è peculiare, perché il prefisso esa è derivato dal greco έξι (exi) (che significa sei), e decimale deriva dalla parola latina per dieci.
Ovviamente per convertire un numero esadecimale in decimale è neccessario moltiplicare i suoi valori per base 16 elevato alla potenza cioè 4F che abbiamo visto prima si trasforma cosi 4*16^1 + F*16^0 dove grazie alla precedente tabella sappiamo che F vale 15 quindi 4*16^1 + 15*16^0, sappiamo anche che qualsiasi numero elevato a 0 da come risultato 1 quindi 4*16^1 + 15*1 semplificato ancore 4*16 + 15 *1 = 64+15 = il nostro famoso 79.
Proviamo l'operazione inversa da decimale ad esadecimale un po' più macchinosa ma una volta capita molto semplice... vediamo: 79:16= 4,93 si arrotonda per difetto il resto cioè 4 succesivamente si moltipla 4*16= 64 e il prodotto và sottratto a 79, cioè 79-64= 15 (si noti che è impossibile che il risultato della sottrazione sia maggiore di 15) il resto visto in precedenza 4 andrebbe ancora diviso per 16, ma essendo inferiore a quest'ultimo lo teniamo come se fosse già stato diviso cioè 4 quindi i resto finali delle operazioni saranno 15 e 4 che visti dal basso (come per il sistema binario) sono 4 e 15 dove il valore 15 è semplificabile (vedi tabella) nel valore 4F ecco risolto... un altro esempio sotto:
FB3 esadecimale corrisponde al numero 4019 in base decimale con la solita moltiplacazione per la base alla potenza. Cioè F*16^2 + B*16^1 + 3*16^0 = dove sappiamo che F vale 15 vedi tabella e che B vale 11 sempre tabella quindi possiamo scrivere 15*16^2 + 11*16^1 + 3*16^0= 15*256 + 11*16 + 3*1= (ricordiamo che qualsiasi numero elvato a zero da 1 come valore) 3840+176+3= 4019
vogliamo fare la controprova?
4019:16 = 251,18 quindi 251 * 16= 4016 quindi 4019-4016 = 3 resto 251:16 = 15,68 quindi 15 * 16= 240 quindi 251-240 = 11 resto 15 è già convertibile in esadecimale non serve dividerlo = 15 “resto” quindi partendo dal basso verso l'alto il nostro numero esadecimale è 15-11-3 cioè F-B-3 si scrive FB3
Frazioni
Il sistema esadecimale se la cava abbastanza bene con le frazioni:
1/2 = 0,8 1/3= 0,5555 periodico 1/4 = 0,4 1/5 = ,3333 periodico 1/6=0,2AAAAperiodico 1/8 = 0,2 1/A = 0,19999 periodico 1/C = 0,15555 periodico
1/F = 0,1111 periodico
Poiché la base è un quadrato, le frazioni esadecimali sono periodiche molto più frequentemente di quelle decimali. I decimali si ripetono quando il denominatore ha un fattore primo che non si trova nella base.
Nel caso dei numeri esadecimali, questo si verifica se e solo se il denominatore non è una potenza di due.
tratto da wikipedia.org
Nessun commento:
Posta un commento