Perché l'esadecimale?
Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 10 di 45.
Ora sai che i computer usano il sistema binario. Allora perché i programmatori assembly raramente scrivono direttamente in binario?
Il problema del binario:
I numeri binari sono molto lunghi. Guarda questo esempio:
| Numero | Binario |
|---|---|
| 255 | 11111111 |
| 1000 | 1111101000 |
| 65535 | 1111111111111111 |
Scrivere lunghe stringhe di 1 e 0 è lento, soggetto a errori e difficile da leggere.
La soluzione: esadecimale (base 16).
Il sistema esadecimale (o «hex») usa 16 simboli:
| Cifra | Valore |
|---|---|
| 0-9 | da 0 a 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Perché l'esadecimale è perfetto per i computer:
Una cifra esadecimale rappresenta esattamente 4 bit (mezzo byte).
| Bit | Cifre esadecimali necessarie |
|---|---|
| 4 bit (nibble) | 1 cifra esadecimale |
| 8 bit (1 byte) | 2 cifre esadecimali |
| 16 bit (2 byte) | 4 cifre esadecimali |
| 32 bit (4 byte) | 8 cifre esadecimali |
| 64 bit (8 byte) | 16 cifre esadecimali |
Lo stesso numero, tre rappresentazioni:
| Decimale | Binario | Esadecimale |
|---|---|---|
| 255 | 11111111 | FF |
| 1000 | 1111101000 | 3E8 |
| 65535 | 1111111111111111 | FFFF |
Nota quanto è più breve l’esadecimale rispetto al binario.
Dove vedrai l'esadecimale nell'assembly:
- Indirizzi di memoria (come
0x7FFFo0x402000) - Codici ASCII (come
0x41per 'A',0x0aper il carattere di nuova riga)
- Valori dei registri nei debugger
- Valori dei colori (come
0xFF0000per il rosso)
Gli esadecimali si scrivono con un prefisso:
| Prefisso | Esempio | Significato |
|---|---|---|
0x | 0xFF | FF in esadecimale (255 in decimale) |
$ | $FF | La stessa cosa (usato in alcuni assemblatori) |
h | FFh | La stessa cosa (stile più datato) |
In questo corso usiamo il prefisso 0x: 0x0a, 0x41, 0xFF.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1La macchina
Che cos’è la CPUMemoriaRegistri vs memoriaCome funzionano le istruzioniSchema a due fileL’architettura x86-642Sistemi numerici
Perché il binario?Numeri binariDa decimale a binarioPerché l'esadecimale?Da esadecimale a decimaleDa decimale a esadecimaleASCII ed esadecimale5Chiamata di sistema di uscita
Cos'è una chiamata di sistema?Chiamata di sistema di uscita (60)Codici di uscitaRiepilogo: uscita correttaEsercitati da solo: Playground Assembly