Sistema numerico esadecimale



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 esadecimali, decimali e ottali dei numeri fino a 15:

0hex = 0dec = 0oct 0 0 0 0
1hex = 1dec = 1oct 0 0 0 1
2hex = 2dec = 2oct 0 0 1 0
3hex = 3dec = 3oct 0 0 1 1
4hex = 4dec = 4oct 0 1 0 0
5hex = 5dec = 5oct 0 1 0 1
6hex = 6dec = 6oct 0 1 1 0
7hex = 7dec = 7oct 0 1 1 1
8hex = 8dec = 10oct 1 0 0 0
9hex = 9dec = 11oct 1 0 0 1
Ahex = 10dec = 12oct 1 0 1 0
Bhex = 11dec = 13oct 1 0 1 1
Chex = 12dec = 14oct 1 1 0 0
Dhex = 13dec = 15oct 1 1 0 1
Ehex = 14dec = 16oct 1 1 1 0
Fhex = 15dec = 17oct 1 1 1 1

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 “0×5A3″. 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 simbolo 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.