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 binarie, esadecimali e decimali dei numeri fino a 15:
bin hex dec bin hex dec
0000 = 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.
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 | = | 0,3333 periodico |
| 1/6 | = | 0,2AAAA periodico |
| 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.
