Binære og hexadecimale tal
Vores viden om aritmetik er så grundlæggende, at det er svært at forestille sig, hvorledes det ville være uden denne viden. Hvis man betragter tallet 349 fås umiddelbart "trehundredeogniogfyrre". Hvis man skal forstå binære og hexadecimale tal, bliver man nødt til at se nærmere på tallet 349 og indse, at det ikke er et tal, men en kode, der beskriver et tal.
Lad os starte i det små, og betragte tallet 3. Tegnet eller cifret 3 er en krusedulle på et stykke papir, medens tallet 3 er et begreb. Cifret benyttes til repræsentere tallet, fx repræsenterer 3, iii, III, *** alle tallet 3.
I titalsystemet eller rettere det decimale talnotationssystem anvendes cifrene 0, 1, 2, 3, 4, 5, 6, 7, 8 og 9 til at repræsentere alle tal. Til at repræsentere tallet 9+1 benyttede de gamle romere tegnet X, medens det arabiske talsystem, som vi benytter os af, og som er et positionstalsystem, benytter cifrene 1 og 0 til at repræsentere tallet. 10 kaldes basen, og cifrenes position angiver deres værdi. Cifret længst til højre repræsenterer 1'ere (100), næste ciffer repræsenterer 10'ere (101) og det n'te ciffer fra højre repræsenterer antallet af 10n-1.
Der findes andre baser end 10. Lad os fx se på ottetalsystemet:
For at skelne mellem tal skrevet i forskellige talsystemer angives basen som et fodtegn til tallet. Fx skrives tallet enogtyve i titalsystemet som 2110, medens det i ottetalsystemet skrives som 258. Hvorfor 25? Jo, fordi 2 betyder, at der er to ottere, og 5 betyder, at der er fem enere, altså seksten plus fem er lig med enogtyve. Vi har således at 2110 = 239 = 258 = 307 =346 osv.
Det binære talsystem er den ultimative udvidelse af talnotationsbegrebet, idet der kun findes to cifre, nemlig 0 og 1. Vi har:
Position: |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Potens: |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
Værdi: |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Tallet enogtyve fra før skrives således som 2110 = 101012
Det binære talsystem er praktisk, fordi det svarer fuldstændig til, hvad en computer behøver at repræsentere, dvs. "tilstrækkelig strøm/ikke tilstrækkelig strøm" eller "ja/nej", "sand/falsk" osv. Pr. definition svarer 0 til "falsk" eller "nej".
Det binære talsystems styrke åbenbares, når først denne overvejelse er gjort. Med 1'ere og 0'ere kan den fundamentale sandhed af ethvert kredsløb repræsenteres: Er der strøm/spænding eller er der ikke?
Konventionen med at betegne sandt og falsk med 1'ere og 0'er gør de binære cifre (bits) særdeles vigtige. De første computere kunne kun sende 8 bits ad gangen, og det var derfor naturligt at skrive koder i 8-bit tal, også kaldet bytes. En halv byte (4 bits) kaldes en nipple. Med 8 binære cifre kan man repræsentere 256 værdier - Fra tallet 0000 00002 = 010 til tallet 1111 11112 = 25510, i alt 256 værdier.
Da det viser sig, at 210 (1.024) tilnærmelsesvis er lig med 103 (1.000), har man i computerkredse refereret til 210 bytes som 1KB eller 1 kilobyte (kilo = tusind). På samme vis refererer man til 1.024 * 1.024 = 1.048.576 bytes som en 1MB eller 1 megabyte (mega = million), og 1.024 megabytes kaldes 1 gigabyte (giga = billion).
De binære tal er imidlertid svære at læse. Derfor har man forsøgt at finde en anden måde at repræsentere de samme værdier på. At oversætte fra binære tal til decimaltal kræver en del talmanipulation, men det viser sig, at være særdeles enkelt at oversætte binære tal til hexadecimale.
Hexadecimale tal (16-talsystemet) består af følgende cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E og F.
Position: |
4 |
3 |
2 |
1 |
Potens: |
163 |
162 |
161 |
160 |
Binært: |
212 |
28 |
24 |
20 |
Værdi: |
4.096 |
256 |
16 |
1 |
For at oversætte binære tal til hexadecimale, så opdeles tallet først i dele af 4 cifre. Tallet 25210 = 111111002 skal oversættes til hexadecimalt. Først opdeles tallet i grupper af 4 cifre:
1 1 1 1 og 1 1 0 0
Tallet til højre 1100 svarer til 12 decimalt eller C hexadecimalt
Tallet til venstre 1111 svarer til 15 decimalt eller F hexadecimalt
Heraf fås, at 11111100 = FC - Ganske enkelt!