Istnieje szereg powodów, niektóre osoby wolą reprezentację szesnastkową na jednym miejscem po przecinku. Najbardziej powszechne w obliczeniach są: bit fields. Kilka osób już wspomniane kody kolorów, np:
red = 0xFF0000 // 16711680 in decimal
green = 0x00FF00 // 65280 in decimal
blue = 0x0000FF // 255 in decimal
Należy pamiętać, że ta reprezentacja koloru jest nie tylko bardziej intuicyjne niż próbuje dowiedzieć się, jaki kolor może być losową liczbę całkowitą jak 213545, ale także zajmuje mniej miejsca niż 3-tka podobna do (125, 255, 0)
reprezentująca (R,G,B)
. Reprezentacja heksadecymalna jest łatwym sposobem na streszczenie tego samego pomysłu, co 3-krotna z dużo mniejszym obciążeniem.
Należy pamiętać, że ugryzł pola mają wiele zastosowań, pod pola spacetime
bitowe:
Represents x coordinate
| Represents y coordinate
| | Represents z coordinate
| | | Represents t
| | | |
1A 2B 3C 4D
Innym powodem, dlaczego ktoś może użyć wartości hex jest bo to czasami łatwiejsze do zapamiętania (i stanowią) binarną cyfrę jako dwa symbole zamiast trzech. Rozważmy x86 Instruction Reference. Wiem z góry, że 0xC3
jest ; Łatwiej jest zapamiętać numery heksadecymalne 00-FF
niż dziesiętne 0-255
(Sprawdziłem i ret
kończy się na 195
), ale twój przebieg może się różnić. Na przykład, jest to jakiś kod from a project Pracuję na:
public class x64OpcodeMapping {
public static final Object[][] map = new Object[][] {
{ "ret", 0xC3 },
{ "iret", 0xCF },
{ "iretd", 0xCF },
{ "iretq", 0xCF },
{ "nop" , 0x90 },
{ "inc" , 0xFF },
};
}
Istnieją wyraźne korzyści (nie wspominając o konsystencji) przy użyciu notacji szesnastkowej tutaj. Wreszcie, jak wspomina Obicere, kody szesnastkowe są często używane jako kody błędów.Czasami są zgrupowane w nieco podobny do pola sposób. Na przykład:
0x0X = fatal errors
0x1X = user errors
0x2X = transaction errors
// ...
// X is a wildcard
ramach takiego schematu, minimalna lista błędów będzie wyglądać następująco:
0x00 = reserved
0x01 = hash mismatch
0x02 = broken pipe
0x10 = user not found
0x11 = user password invalid
0x20 = payment method invalid
// ...
pamiętać, że ta pozwala również na dodawanie nowych błędów pod 0x0X
jeśli taka potrzeba będzie wynikać. Ta odpowiedź okazała się o wiele dłuższa, niż się spodziewałem, ale mam nadzieję, że rzucę trochę światła.
Liczby mogą bardziej logicznie rozumieć (np. "0x0001, 0x0010, 0x0100, 0x1000" zamiast "1, 16, 256, 4096"). Jest również bardzo często stosowany w kolorach i kodach błędów. – Obicere
Wierzę, że jest to duplikat pytania, na które odpowiedziałem, [tutaj] (http://stackoverflow.com/questions/18304564/what-does-this-line-of-code-do-const-uint32-t -goodguys-0x1-0/18317401 # 18317401). – Jashaszun
@Jashaszun Podczas gdy materiał pytania jest powiązany, uważam, że to pytanie dotyczy szerokiego zastosowania formatu szesnastkowego, podczas gdy pytanie, które łączysz, jest bardziej skoncentrowane na jednym konkretnym przypadku. Nadal uważam, że twoja odpowiedź zawiera świetne punkty związane z tym pytaniem. – Vulcan