Ci sono una serie di ragioni si preferirebbe una rappresentazione esadecimale su uno decimale. I più comuni nel calcolo sono bit fields. Alcune persone già citati codici di colore, ad esempio:
red = 0xFF0000 // 16711680 in decimal
green = 0x00FF00 // 65280 in decimal
blue = 0x0000FF // 255 in decimal
Si noti che questa rappresentazione del colore è non solo più intuitivo che cercare di capire di che colore un intero casuale come 213.545 potrebbe essere, ma ci vuole anche meno spazio di una tupla 3 come (125, 255, 0)
che rappresenta (R,G,B)
. La rappresentazione esadecimale è un modo semplice per astrarre la stessa idea della 3-tupla con molto meno overhead.
Tenete a mente che del campo di bit hanno molte applicazioni, prendere in considerazione un campo spacetime
po ':
Represents x coordinate
| Represents y coordinate
| | Represents z coordinate
| | | Represents t
| | | |
1A 2B 3C 4D
Un'altra ragione per cui qualcuno potrebbe utilizzare valori esadecimali è perché a volte è più facile da ricordare (e rappresentano) una cifra binaria come due simboli anziché tre. Si consideri lo x86 Instruction Reference. So che la parte superiore della mia testa è che 0xC3
è ret
; Trovo più facile memorizzare i numeri esadecimali 00-FF
anziché i decimali 0-255
(l'ho cercato e ret
termina con lo 195
), ma il tuo chilometraggio può variare. Ad esempio, questo è un codice from a project ho lavorato su:
public class x64OpcodeMapping {
public static final Object[][] map = new Object[][] {
{ "ret", 0xC3 },
{ "iret", 0xCF },
{ "iretd", 0xCF },
{ "iretq", 0xCF },
{ "nop" , 0x90 },
{ "inc" , 0xFF },
};
}
ci sono evidenti vantaggi (per non parlare di coerenza) quando si utilizza la notazione esadecimale qui. Infine, come menzionato da Obicere, i codici esadecimali sono spesso usati come codici di errore.A volte sono raggruppati in un modo simile al campo. Per esempio:
0x0X = fatal errors
0x1X = user errors
0x2X = transaction errors
// ...
// X is a wildcard
In base a tale schema, un elenco minimo errore sarà simile:
0x00 = reserved
0x01 = hash mismatch
0x02 = broken pipe
0x10 = user not found
0x11 = user password invalid
0x20 = payment method invalid
// ...
Si noti che questo permette anche di aggiungere nuovi errori sotto 0x0X
se tale necessità si porrebbe. Questa risposta ha finito per essere molto più lunga di quanto mi aspettassi, ma spero di far luce.
I numeri possono essere più logici in questo modo (ad esempio '0x0001, 0x0010, 0x0100, 0x1000' invece di' 1, 16, 256, 4096'). È anche molto comunemente usato nei colori e nei codici di errore. – Obicere
Credo che questo sia un duplicato di una domanda a cui ho risposto, [qui] (http://stackoverflow.com/questions/18304564/what-does-this-line-of-code-do-const-uint32-t -goodguys-0x1-0/18.317.401 # 18.317.401). – Jashaszun
@Jashaszun Mentre il materiale delle domande è correlato, ritengo che questa domanda riguardi l'ampio uso del formato esadecimale mentre la domanda che si collega è più focalizzata su un caso specifico. Tuttavia, credo che la tua risposta là faccia grandi punti relativi a questa domanda. – Vulcan