Skriv et vanlig tall eller et binært tall, og se omregningen begge veier — med heksadesimal på kjøpet og hele utregningen trinn for trinn.
Tallsystemet du bruker til daglig har ti sifre, 0 til 9, og hver plass i tallet er verdt ti ganger så mye som plassen til høyre. Tallet 347 betyr 3 hundrere + 4 tiere + 7 enere. Totallssystemet følger nøyaktig samme logikk, men med bare to sifre — 0 og 1 — og plassverdier som dobles i stedet for å tidobles: 1, 2, 4, 8, 16, 32 og så videre.
Det binære tallet 1101 betyr dermed 1 åtter + 1 firer + 0 toere + 1 ener, altså 8 + 4 + 1 = 13. Det finnes ingen magi i binære tall; det er samme posisjonssystem som du lærte på barneskolen, bare med en annen grunnverdi.
En datamaskin består i bunn og grunn av milliarder av transistorer — bittesmå brytere som enten leder strøm eller ikke. To tilstander er noe elektronikk kan skille pålitelig mellom selv med støy, varme og produksjonsvariasjoner: enten er spenningen høy (1), eller så er den lav (0). Skulle en transistor i stedet representere ti ulike nivåer, måtte den treffe riktig av ti smale spenningsbånd hver eneste gang — milliarder av ganger i sekundet. Det går rett og slett ikke.
Med to sikre tilstander som byggekloss kan alt annet bygges opp: tall lagres som grupper av bits, bokstaver får hvert sitt tallnummer (A er 65 i ASCII-tabellen, altså 01000001), bilder blir rutenett av tallverdier, og lyd blir lange rekker av målte tall. Alt du ser på en skjerm er til sjuende og sist bare veldig mange nuller og enere flyttet veldig fort.
Den enkleste metoden for håndregning er å dele på 2 gjentatte ganger og notere resten hver gang:
Kalkulatoren øverst viser nøyaktig disse trinnene for tallet du skriver inn, så du kan kontrollere din egen håndregning mot fasit.
| Desimal | Binær | Heksadesimal |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 2 | 10 | 2 |
| 3 | 11 | 3 |
| 4 | 100 | 4 |
| 5 | 101 | 5 |
| 6 | 110 | 6 |
| 7 | 111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
| 17 | 10001 | 11 |
| 18 | 10010 | 12 |
| 19 | 10011 | 13 |
| 20 | 10100 | 14 |
Legg merke til mønsteret: hver gang desimaltallet passerer en potens av 2 (2, 4, 8, 16), får det binære tallet ett siffer til. Og ved 16 ruller heksadesimalsystemet over til to sifre — akkurat som titallssystemet gjør ved 10.
| Potens | Verdi | Der du møter den |
|---|---|---|
| 20 | 1 | Én bit: av eller på |
| 22 | 4 | Fire kombinasjoner av to bits |
| 24 | 16 | Ett heksadesimalt siffer |
| 28 | 256 | Én byte; fargeverdier 0–255 |
| 210 | 1 024 | Én kibibyte (KiB) |
| 216 | 65 536 | Antall porter på en nettverksmaskin |
| 220 | 1 048 576 | Én mebibyte (MiB) |
| 232 | ca. 4,29 mrd. | Grensen for 32-bits systemer og IPv4-adresser |
| 264 | ca. 18,4 trill. | Tallområdet i moderne prosessorer |
Én bit (binary digit) er det minste som finnes i en datamaskin: ett siffer som er 0 eller 1. Åtte bits utgjør én byte, som kan ha 256 ulike verdier — nok til én bokstav, ett tall mellom 0 og 255, eller én fargekanal i et bilde.
Herfra bygges alt større: en kilobyte (kB) er 1 000 bytes, en megabyte er 1 000 000, og så videre. I praksis brukes også totallsvariantene 1 024 (KiB), 1 048 576 (MiB) og videre, fordi de passer maskinens egen binære inndeling. Det er denne forskjellen som gjør at en «1 TB»-disk vises som ca. 931 GB i operativsystemet: produsenten teller i tusener, maskinen i 1024-ere.
Heksadesimal som snarvei: fire bits gir nøyaktig 16 kombinasjoner, så ett heksadesimalt siffer (0–9, A–F) erstatter fire binære. Byten 11111111 skrives kort og godt FF. Det er derfor fargekoder som #FF6600 og minneadresser skrives heksadesimalt — det er binært, bare pakket tettere.
Del tallet på 2 og noter resten (0 eller 1). Del svaret på 2 igjen og noter resten, og fortsett til du står igjen med 0. Restene lest nedenfra og opp er det binære tallet. Eksempel: 13 gir restene 1, 0, 1, 1 — altså 1101.
Gi hvert siffer en plassverdi som er en potens av 2: 1, 2, 4, 8, 16 og så videre fra høyre. Legg sammen plassverdiene der sifferet er 1. Eksempel: 1101 = 8 + 4 + 1 = 13.
Fordi elektronikk er pålitelig når den bare trenger å skille mellom to tilstander: strøm på eller strøm av. En transistor som skulle representere ti ulike spenningsnivåer ville vært langt mer følsom for støy og varme. Med bare to nivåer kan milliarder av transistorer regne feilfritt milliarder av ganger i sekundet.
En bit er ett binært siffer, altså 0 eller 1. En byte er 8 bits og kan representere 256 ulike verdier (0 til 255). Én byte er nok til én bokstav i vanlig tekst, og alle større enheter — kilobyte, megabyte, gigabyte — er bygget opp av bytes.
Heksadesimal er sekstentallssystemet med sifrene 0–9 og A–F. Det brukes fordi ett heksadesimalt siffer tilsvarer nøyaktig fire bits, så en byte kan skrives med bare to tegn. Fargekoden #FF6600 og minneadresser i programmering er typiske eksempler.
8 bits rommer 256 verdier (0–255), 16 bits rommer 65 536, 32 bits rommer ca. 4,29 milliarder og 64 bits rommer ca. 18,4 trillioner. Det er derfor eldre 32-bits systemer fikk problemer med tall over 4 milliarder, for eksempel i tidsstempler og filstørrelser.