29/05/2020
I en verden domineret af digital teknologi er det afgørende at forstå de grundlæggende byggesten i databehandling. Mens vi i hverdagen bruger det decimale talsystem (base-10), opererer computere fundamentalt med det binære system (base-2). For at gøre lange binære strenge mere læselige og håndterbare for mennesker, bruges det hexadecimale talsystem (base-16) i vid udstrækning inden for programmering, digital elektronik og datalogi. Dette system bruger 16 symboler: tallene 0-9 og bogstaverne A-F. At kunne udføre aritmetiske operationer direkte med disse tal er en essentiel færdighed. Denne artikel giver en dybdegående guide til de fire grundlæggende regnearter: addition, subtraktion, multiplikation og division i det hexadecimale system.

Forståelse af det Hexadecimale Talsystem
Før vi dykker ned i aritmetikken, er det vigtigt at have en solid forståelse af selve talsystemet. Det hexadecimale system er et base-16 system. Det betyder, at hver position i et tal repræsenterer en potens af 16. Symbolerne 0-9 har samme værdi som i det decimale system, mens bogstaverne A, B, C, D, E og F repræsenterer værdierne 10, 11, 12, 13, 14 og 15.
- A = 10
- B = 11
- C = 12
- D = 13
- E = 14
- F = 15
Et hexadecimalt tal som f.eks. 1A3 oversættes til decimal således: (1 * 16²) + (10 * 16¹) + (3 * 16⁰) = 256 + 160 + 3 = 419.
Hexadecimal Addition
Hexadecimal addition følger de samme principper som decimal addition, men med en afgørende forskel: en mente (carry) genereres, når summen i en kolonne er 16 eller større, ikke 10. Når en mente opstår, trækkes 16 fra summen, og 1 overføres til næste kolonne til venstre.
Eksempel 1: Addition
Lad os addere (5A)₁₆ og (BF)₁₆.
- Højre kolonne: A + F = 10 + 15 = 25. Da 25 er større end 15, skal vi finde ud af, hvor mange gange 16 går op i 25. 25 = 1 * 16 + 9. Resultatet i denne kolonne er 9, og vi har en mente på 1 til næste kolonne.
- Venstre kolonne: 5 + B + 1 (mente) = 5 + 11 + 1 = 17. Igen er summen større end 15. 17 = 1 * 16 + 1. Resultatet i denne kolonne er 1, og vi har en mente på 1 til næste kolonne.
- Sidste mente: Da der ikke er flere kolonner, bliver den sidste mente den mest betydende ciffer i resultatet.
Resultatet er derfor (119)₁₆.
Eksempel 2: Addition
Lad os addere (ABC)₁₆ og (2A9)₁₆.
- Højre kolonne: C + 9 = 12 + 9 = 21. 21 = 1 * 16 + 5. Resultatet er 5, med en mente på 1.
- Midterste kolonne: B + A + 1 (mente) = 11 + 10 + 1 = 22. 22 = 1 * 16 + 6. Resultatet er 6, med en mente på 1.
- Venstre kolonne: A + 2 + 1 (mente) = 10 + 2 + 1 = 13. Da 13 er mindre end 16, er der ingen mente. Værdien 13 repræsenteres af bogstavet D.
Resultatet er derfor (D65)₁₆.
Hexadecimal Subtraktion
Hexadecimal subtraktion ligner også sin decimale modpart. Den vigtigste forskel opstår, når et ciffer i minuenden (det øverste tal) er mindre end det tilsvarende ciffer i subtrahenden (det nederste tal). I dette tilfælde må man 'låne' fra den næste kolonne til venstre. At låne 1 fra en højere kolonne svarer til at tilføje 16 til den nuværende kolonne.
Eksempel 1: Subtraktion
Lad os trække (125)₁₆ fra (A57)₁₆.
- Højre kolonne: 7 - 5 = 2.
- Midterste kolonne: 5 - 2 = 3.
- Venstre kolonne: A - 1 = 10 - 1 = 9.
Resultatet er (932)₁₆. Dette var et simpelt eksempel uden behov for at låne.
Eksempel 2: Subtraktion med lån
Lad os trække (1DA)₁₆ fra (BC5)₁₆.
- Højre kolonne: 5 - A. Da 5 er mindre end A (10), må vi låne fra næste kolonne (C). C bliver til B (11), og 5 bliver til 5 + 16 = 21. Nu kan vi regne: 21 - A = 21 - 10 = 11, hvilket er B.
- Midterste kolonne: Vi har nu B - D. Husk, at vi lånte fra C, så det er nu B. Da B (11) er mindre end D (13), må vi låne igen fra den næste kolonne (B). B bliver til A (10), og vores B bliver til B + 16 = 11 + 16 = 27. Nu regner vi: 27 - D = 27 - 13 = 14, hvilket er E.
- Venstre kolonne: Vi har nu A - 1 (da vi lånte fra B). A - 1 = 10 - 1 = 9.
Resultatet er derfor (9EB)₁₆.
Hexadecimal Multiplikation
Multiplikation af hexadecimale tal kan virke skræmmende, men processen er den samme som lang multiplikation i decimalsystemet. Man multiplicerer hvert ciffer i det ene tal med hvert ciffer i det andet og holder styr på menter, som igen er baseret på 16.
Eksempel: Multiplikation
Lad os multiplicere (A19)₁₆ med (B)₁₆.
- Første skridt: 9 * B = 9 * 11 = 99. For at konvertere 99 til hexadecimal, dividerer vi med 16. 99 / 16 = 6 med en rest på 3. Så resultatet er 3, og vi har en mente på 6.
- Andet skridt: 1 * B + 6 (mente) = 1 * 11 + 6 = 17. 17 / 16 = 1 med en rest på 1. Resultatet er 1, og vi har en mente på 1.
- Tredje skridt: A * B + 1 (mente) = 10 * 11 + 1 = 111. 111 / 16 = 6 med en rest på 15 (F). Resultatet er F, og vi har en mente på 6.
- Sidste mente: Den sidste mente på 6 skrives forrest.
Resultatet er derfor (6F13)₁₆.
Hexadecimal Division
Division er den mest komplekse af de fire regnearter. Den følger proceduren for lang division, men alle subtraktioner og multiplikationer undervejs udføres i hexadecimal.
Eksempel: Division
Lad os dividere (A29)₁₆ med (5)₁₆.
- Første ciffer: Hvor mange gange går 5 op i A (10)? Det gør den 2 gange (2 * 5 = A). Vi skriver 2 i kvotienten. Resten er 0.
- Næste ciffer: Træk det næste ciffer (2) ned. Hvor mange gange går 5 op i 2? Det gør den 0 gange. Vi skriver 0 i kvotienten.
- Næste ciffer: Træk det næste ciffer (9) ned. Vi har nu 29₁₆. For at dividere, konverterer vi 29₁₆ til decimal: (2 * 16) + 9 = 32 + 9 = 41. Hvor mange gange går 5 op i 41? Det gør den 8 gange (8 * 5 = 40). Vi skriver 8 i kvotienten. Resten er 41 - 40 = 1.
Resultatet er en kvotient på (208)₁₆ og en rest på (1)₁₆.
Alternativ Metode: Aritmetik via Binær Konvertering
En anden måde at udføre hexadecimal aritmetik på, især en der afspejler, hvordan en computer arbejder, er ved først at konvertere de hexadecimale tal til binære tal. Hvert hexadecimalt ciffer svarer til en gruppe på 4 binære cifre (bits). Efter konverteringen udføres regneoperationen binært, og resultatet konverteres til sidst tilbage til hexadecimal.
Hexadecimal til Binær Konverteringstabel
| Hexadecimal | Binær | Hexadecimal | Binær |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | A | 1010 |
| 3 | 0011 | B | 1011 |
| 4 | 0100 | C | 1100 |
| 5 | 0101 | D | 1101 |
| 6 | 0110 | E | 1110 |
| 7 | 0111 | F | 1111 |
Eksempel: Addition via Binær Konvertering
Addér (A5C)₁₆ og (CCD)₁₆.
- Konvertering:
(A5C)₁₆ = 1010 0101 1100
(CCD)₁₆ = 1100 1100 1101 - Binær Addition:
1010 0101 1100
+ 1100 1100 1101
------------------
1 0111 0010 1001 - Konverter tilbage:
Gruppér resultatet i 4-bit grupper fra højre: 0001 0111 0010 1001
(0001)₂ = 1₁₆
(0111)₂ = 7₁₆
(0010)₂ = 2₁₆
(1001)₂ = 9₁₆
Det endelige resultat er (1729)₁₆.
Ofte Stillede Spørgsmål
Hvorfor bruger programmører hexadecimale tal?
Hexadecimale tal er en meget mere kompakt og menneskeligt læsbar måde at repræsentere lange binære koder på. Da hvert hexadecimalt ciffer repræsenterer præcis fire binære cifre, er konverteringen mellem de to systemer hurtig og direkte. Det bruges ofte til at vise hukommelsesadresser, farvekoder (f.eks. #FFFFFF for hvid) og data i en debugger.
Hvad er den mest almindelige fejl ved hexadecimal regning?
Den mest almindelige fejl er at glemme, at systemet er base-16. Mange begår den fejl at lave en mente eller låne baseret på 10, som vi er vant til fra decimalsystemet. Det er afgørende altid at huske, at en mente eller et lån har værdien 16.
Kan jeg bruge en lommeregner til dette?
Ja, de fleste videnskabelige lommeregnere samt programmeringslommeregnere, der findes i operativsystemer som Windows og macOS, har en 'programmør'-tilstand, der kan udføre aritmetik i binære, oktale, decimale og hexadecimale systemer.
Konklusion
Selvom det kan virke komplekst i starten, er hexadecimal aritmetik en logisk udvidelse af de principper, vi allerede kender fra det decimale system. At mestre disse operationer er en uvurderlig færdighed for enhver, der arbejder tæt på hardware, med low-level programmering, eller inden for digital elektronik. Uanset om man vælger den direkte metode eller vejen via binær konvertering, åbner en solid forståelse af hexadecimal regning døren til en dybere indsigt i, hvordan digitale systemer fungerer.
Hvis du vil læse andre artikler, der ligner Hexadecimal Aritmetik: En Komplet Guide, kan du besøge kategorien Teknologi.
