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.





































