Det hexadecimale talsystem, ofte forkortet til "hex", er et talsystem bestående af 16 symboler (base 16). Standardtalsystemet kaldes decimaltal (base 10) og anvender ti symboler: 0,1,2,3,4,5,6,7,8,9. Hexadecimaltalsystemet anvender decimaltallene og seks ekstra symboler. Der findes ingen talsymboler, der repræsenterer værdier større end ni, så der anvendes bogstaver fra det engelske alfabet, nærmere bestemt A, B, C, D, E og F. Hexadecimaltal A = decimal 10, og hexadecimaltal F = decimal 15.
Mennesker bruger for det meste decimalsystemet (base 10), hvor hvert ciffer kan have en af ti værdier mellem nul og ni. Det skyldes sandsynligvis, at mennesker har ti fingre på deres hænder. Computere repræsenterer generelt tal i binært system (base 2). I binærsystemet kaldes hvert "binært ciffer" for en bit og kan kun have en af to værdier: 1 eller 0. Da en enkelt bit med to mulige værdier repræsenterer langt mindre information end et decimalt ciffer, kan binære repræsentationer af heltalsværdier kræve mange flere bits end det samme tal i decimalform.
For eksempel kræver den trecifrede decimalværdi 219 otte bits for at blive repræsenteret i binær form (11011011). Mennesker finder det uhensigtsmæssigt at læse, huske og skrive lange strenge af bits. Hexadecimalt kan grupper af fire bits lettere repræsenteres ved hjælp af et enkelt "hex"-ciffer, så den otte bit store binære værdi 11011011 kræver kun to hexadecimale cifre: "DB".
Computerhukommelse er organiseret som et array af bitstrenge kaldet bytes. På moderne computere indeholder hver byte normalt otte bits, som praktisk kan repræsenteres som to hexadecimale cifre. Ingeniører og dataloger betegner ofte hver af disse fire bitværdier som en nibble (undertiden stavet nybble, se computerjargon).
For at undgå forvirring med decimale, oktale eller andre talsystemer skrives hexadecimale tal nogle gange med et "h" efter eller "0x" foran tallet. F.eks. betyder 63h og 0x63 63 hexadecimalt. I webdesign bruges ofte # foran hexfarver, fx #FF0000 for rent rød.
Hvordan konverterer man mellem hex og decimal?
Hexadecimale tal er positionelle, ligesom decimale: hvert ciffer repræsenterer en potens af 16. Konvertering følger derfor samme princip som andre positionelle systemer.
Hex → Decimal (trinvis):
- Giv hver hex-ciffer en værdi (0–9, A=10 … F=15).
- Gang hvert ciffer med 16 opløftet til positionens eksponent (højre ciffer = 16^0, næste = 16^1 osv.).
- Summer resultaterne.
Eksempel: 1A3₁₆ = 1·16² + 10·16¹ + 3·16⁰ = 256 + 160 + 3 = 419₁₀.
Decimal → Hex (division):
- Divider det decimale tal med 16.
- Skriv restværdien ned (det bliver det laveste hex-ciffer).
- Tag heltalskvotienten og gentag, indtil kvotienten er 0.
- Læs resterne fra sidste til første for at få hex-værdien.
Eksempel: 419₁₀ → 419 ÷ 16 = 26 rest 3; 26 ÷ 16 = 1 rest 10 (A); 1 ÷ 16 = 0 rest 1 → 1A3₁₆.
Hex og binært — 4 bits pr. hex-ciffer
Hver hex-ciffer svarer præcis til en gruppe på fire binære bit (en "nibble"). Derfor er konvertering mellem hex og binær enkel:
- Erstat hvert hex-ciffer med dets 4-bit binære ækvivalent (med foranstillede 0'er hvis nødvendigt).
- Eksempel: D = 13 = 1101, B = 11 = 1011 → DB₁₆ = 11011011₂.
- Omvendt kan du dele en binær streng i grupper af fire (fra højre) og erstatte hver gruppe med det tilsvarende hex-ciffer.
Praktiske anvendelser af hex i computere
- Hukommelsesadresser: Operativsystemer, debuggere og lavniveau-kode viser ofte adresser i hex, fordi det er kortere og læsevenligt sammenlignet med binært.
- Maskinkode og opcodes: Instruktioner og data i assembly/firmware vises ofte i hex, da det svarer direkte til byteindholdet i hukommelsen.
- Farvekoder i webdesign: RGB-farver angives i hex som #RRGGBB, fx #00FF00 = grønt.
- Checksums, GUIDs og UUIDs: Disse repræsentationer bruger ofte hex for kompakt visning af store byte-sekvenser.
- Netværksprotokoller: Pakker og hexdumps bruges til at analysere rå data i netværkstrafik.
Vigtige noter og tips
- Præfikser og konventioner: Brug 0x (C/C++/Python) eller det postfikserede h (nogle assembler-syntaxer) for at angive hex. I HTML/CSS bruges # til farver.
- Store og små bogstaver: Hex-bogstaver kan være store eller små (A–F eller a–f); værktøjer håndterer normalt begge.
- Endianness: Hex-skrivning viser typisk bytes i logisk rækkefølge; i hukommelsen kan byteordenen dog være little-endian eller big-endian, hvilket påvirker hvordan flert-byte tal tolkes.
- Læsbarhed: Når man arbejder med lange hex-strenge, bruges ofte grupperinger (fx 0xDE AD BE EF eller DE:AD:BE:EF) for bedre læsbarhed.
Ekstra: hurtig opslagsliste for hex ↔ bin
- 0 = 0000
- 1 = 0001
- 2 = 0010
- 3 = 0011
- 4 = 0100
- 5 = 0101
- 6 = 0110
- 7 = 0111
- 8 = 1000
- 9 = 1001
- A = 1010
- B = 1011
- C = 1100
- D = 1101
- E = 1110
- F = 1111
Hexadecimale tal gør det nemmere at vise og arbejde med binære data i en kompakt, læsbar form. Fordi en hex-ciffer svarer præcis til fire bit, er systemet særligt praktisk i computervidenskab, elektronik og digital forarbejdning.