Hexadecimalt talsystem (base 16): Forklaring, konvertering og brug i computere
Lær hexadecimalt talsystem (base 16): klar forklaring, trin-for-trin konvertering, praktiske eksempler og brug i computere, bytes og bitgrupper.
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.
Historie
I modsætning til moderne computere havde mange af de tidlige computere seks bit-bytes. Programmører af disse systemer brugte typisk et alternativt bitgrupperingsskema kaldet oktal. Hvert oktalciffer repræsenterer effektivt tre bits, og en seks-bit-byte kan repræsenteres som to oktalcifre. Tre bits, der hver især er tændt eller slukket, kan repræsentere de otte tal fra 0 til 7: 000 = 0; 001 = 1; 010 = 2; 011 = 3; 100 = 4; 101 = 5; 110 = 6 og 111 = 7.
Hexadecimale værdier
Hexadecimalt talsystem ligner det oktale talsystem (base 8), fordi begge systemer let kan sammenlignes med det binære talsystem. Hexadecimaltal anvender en binær kodning på fire bit. Det betyder, at hvert ciffer i hexadecimalt tal er det samme som fire cifre i binært tal. Oktal anvender et binært system med tre bit.
I decimalsystemet er det første ciffer etteren, det næste ciffer til venstre er tieren, det næste er hundredepladsen osv. I hexadecimalt system kan hvert ciffer have 16 værdier, ikke 10. Det betyder, at cifrene har etteren, sekstenpladsen, og det næste ciffer er 256-pladsen. Så 1h = 1 decimal, 10h = 16 decimal, og 100h = 256 i decimal.
Eksempler på værdier af hexadecimale tal konverteret til binære, oktale og decimale tal.
|
Konvertering
Binær til hexadecimal
Ved at ændre et tal fra binært til hexametre anvendes en grupperingsmetode. Det binære tal opdeles i grupper af fire cifre, der starter fra højre. Disse grupper konverteres derefter til hexadecimale cifre som vist i skemaet ovenfor for de hexadecimale tal 0 til F. For at ændre fra hexadecimaltal gøres det omvendte. De hexadecimale cifre ændres hver især til binære, og grupperingen fjernes normalt.
| Binær | Grupperinger | Hex | |||
| 01100101 | 0110 | 0101 | 65 | ||
| 010010110110 | 0100 | 1011 | 0110 | 4B6 | |
| 1101011101011010 | 1101 | 0111 | 0101 | 1010 | D75A |
Når antallet af bits i et binært tal ikke er et multiplum af 4, fyldes det op med nuller for at gøre det til et multiplum af 4. Eksempler:
- binær 110 = 0110, hvilket er 6 Hex.
- binær 010010 = 0001001010, hvilket er 12 Hex.
Hexadecimalt til decimalt
Der er to almindelige måder at konvertere et tal fra hexadecimalt til decimaltal på.
Den første metode er mere almindelig, når du konverterer den manuelt:
- Brug decimalværdien for hvert hexadecimalt ciffer. For 0-9 er det det samme, men A = 10, B = 11, C = 12, D = 13, E = 14 og F = 15.
- Opfør en sum af de tal, der er konverteret i hvert trin nedenfor.
- Start med det mindst betydende hexadecimale ciffer. Det er det ciffer, der står i højre ende. Dette vil være det første element i en sum.
- Tag det næstmindste betydende ciffer. Det ligger ved siden af det tal, der står i højre ende. Multiplicer decimalværdien af cifferet med 16. Læg dette til summen.
- Gør det samme med det tredje mindst betydende ciffer, men gang det med 162 (dvs. 16 kvadreret eller 256). Læg det til summen.
- Fortsæt for hvert ciffer ved at gange hvert sted med en anden potens af 16. (4096, 65536 osv.)
|
| Placering | |||||
| 6 | 5 | 4 | 3 | 2 | 1 | |
| Værdi | 1048576 (16 )5 | 65536 (16 )4 | 4096 (16 )3 | 256 (16 )2 | 16(16 )1 | 1 (16 )0 |
Den næste metode er mere almindelig, når du konverterer et tal i software. Den behøver ikke at vide, hvor mange cifre tallet har, før den starter, og den ganges aldrig med mere end 16, men den ser længere ud på papiret.
- Brug decimalværdien for hvert hexadecimalt ciffer. For 0-9 er det det samme, men A = 10, B = 11, C = 12, D = 13, E = 14 og F = 15.
- Opfør en sum af de tal, der er konverteret i hvert trin nedenfor.
- Start med det mest betydende ciffer (det ciffer, der står længst til venstre). Dette er det første led i summen.
- Hvis der findes et andet ciffer, ganges summen med 16 og tilføj decimalværdien for det næste ciffer.
- Gentag ovenstående trin, indtil der ikke er flere cifre.
Eksempel: 5Fh og 3425h til decimal, metode 1
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Eksempel: 5Fh og 3425h til decimal, metode 2
|
|
|
|
| |||||||||||||||||||||||||||||||||||||||||
Relaterede sider
- Binært talsystem
- oktaltalsystem
- Decimaltalsystem
Spørgsmål og svar
Q: Hvad er det hexadecimale talsystem?
A: Det hexadecimale talsystem er et base 16-talsystem, der består af 16 symboler.
Spørgsmål: Hvilke ti symboler anvendes i decimalsystemet (base 10)?
A: De ti symboler, der anvendes i decimalsystemet (base 10), er 0,1,2,3,4,4,5,6,7,8 og 9.
Sp: Hvilke seks ekstra symboler anvendes i hexadecimalt system?
Svar: Hexadecimaltal bruger bogstaver fra det engelske alfabet - A, B, C, D, E og F.
Spørgsmål: Hvor mange bits indeholder en enkelt byte på moderne computere?
A: På moderne computere indeholder hver byte normalt otte bits.
Spørgsmål: Hvad kalder ingeniører og dataloger firebitværdier?
Svar: Ingeniører og dataloger kalder firebitværdier for nibbles (undertiden stavet nybble).
Spørgsmål: Hvordan kan man undgå forvirring med andre talsystemer, når man skriver hexadecimale tal?
A: For at undgå forvirring med andre talsystemer, når man skriver hexadecimaltal, kan man tilføje et "h" efter eller "0x" foran tallet. F.eks. 63h eller 0x63 betyder 63 hexadecimaltal.
Søge