Tilbake
1.6
Tallsystemer og datarepresentasjon

1.6 Tallsystemer og datarepresentasjon

Forstå hvordan datamaskiner representerer data med binære og heksadesimale tallsystemer, og hvordan tekst, bilder og lyd lagres digitalt.

60 min
6 oppgaver
Binære tallHeksadesimale tallASCII og UnicodePikselrepresentasjonSampling av lyd
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

To tegn, uendelig mange muligheter

La oss leke med en tanke. Tenk deg at du bare hadde to bokstaver til rådighet -- la oss kalle dem 0 og 1. Ingen flere. Kunne du skrevet en bok? Tegnet et bilde? Spilt en sang? Det høres umulig ut. Likevel er dette nøyaktig hva datamaskinen din gjør hele tiden. Alt den noensinne har vist deg -- hver tekstmelding, hvert selfie, hver YouTube-video -- finnes egentlig bare som endeløse rekker av nuller og enere.

Dette er kanskje den mest grunnleggende ideen i hele informasjonsteknologien: at all verdens informasjon kan kokes ned til to tilstander. Av eller på. Strøm eller ikke strøm. Null eller en. For deg som skal jobbe med IT og media, er det å forstå dette språket som å lære alfabetet før du skriver romaner.

I denne fortellingen skal vi knekke koden. Vi skal lære hvordan det binære tallsystemet fungerer, hvordan vi oversetter mellom maskinens språk og vårt eget, hvordan bokstaver blir til tall, og hvordan et bilde egentlig bare er et gigantisk rutenett av fargepunkter -- alt sammen bygget på de samme to tegnene.

Den minste byggesteinen

La oss begynne helt i bunnen. Den aller minste dataenheten kalles en bit, og den kan bare ha to verdier: 0 eller 1. Én ensom bit kan ikke fortelle deg stort. Men samler vi åtte bit sammen, får vi en byte, og nå begynner det å bli interessant. En byte kan representere 28=2562^8 = 256 ulike verdier, altså tallene fra 0 til 255. Det er nok til å beskrive en bokstav, en fargeintensitet eller mye annet.

Fra byten bygger vi videre oppover. En kilobyte er 1024 byte, en megabyte er 1024 kilobyte, en gigabyte er 1024 megabyte, og en terabyte er 1024 gigabyte. Det er disse enhetene du ser når telefonen din sier at bildebiblioteket tar 12 GB, eller når en film er på et par gigabyte.

Men hvordan kan disse nullene og enerne faktisk bli til tall vi kjenner? Her må vi forstå det binære tallsystemet. Til vanlig bruker vi det desimale systemet med grunntall 10 og sifrene 0 til 9. Datamaskinen bruker grunntall 2, med bare 0 og 1. Akkurat som hvert siffer i et desimaltall har en posisjonsverdi, har hvert binært siffer det også -- men basert på potenser av 2. Lengst til høyre står 1- plassen, så 2, så 4, 8, 16, 32, 64 og 128 etter hvert som vi beveger oss mot venstre.

📝Oppgave Quiz 1

Å oversette mellom to verdener

Nå skal vi lære å snakke begge språk -- å oversette mellom binært og desimalt. Det er enklere enn det høres ut.

La oss ta det binære tallet 101121011_2 og finne ut hva det er i desimalt. Vi går gjennom posisjonene fra høyre og legger sammen verdiene der det står 1. Her har vi 18+04+12+11=8+2+1=11101 \cdot 8 + 0 \cdot 4 + 1 \cdot 2 + 1 \cdot 1 = 8 + 2 + 1 = 11_{10}. Altså er 101121011_2 det samme som 11. La oss ta et lengre eksempel: 11010110211010110_2. Vi summerer posisjonsverdiene der det står 1: 128+64+16+4+2=21410128 + 64 + 16 + 4 + 2 = 214_{10}.

Den andre veien -- fra desimalt til binært -- bruker vi en triks med gjentatt deling på 2. La oss konvertere 13. Vi deler på 2 og noterer resten hver gang: 13÷2=613 \div 2 = 6 rest 1, 6÷2=36 \div 2 = 3 rest 0, 3÷2=13 \div 2 = 1 rest 1, og 1÷2=01 \div 2 = 0 rest 1. Så leser vi restene baklengs, nedenfra og opp: 1310=1101213_{10} = 1101_2. Prøv samme metode på 42, så ser du at det blir 1010102101010_2 -- et fint, vekslende mønster.

Det kan virke tungvint i starten, men dette er selve broen mellom hvordan vi tenker og hvordan maskinen tenker. Når du behersker den, har du fått et glimt inn i maskinens indre liv.

📝Oppgave Quiz 2

Den praktiske snarveien: heksadesimalt

Lange rekker med nuller og enere blir fort uoversiktlige. Tenk deg å skrive ut en hel byte: 1101011011010110. Lett å gjøre feil, ikke sant? Derfor har IT-folk en smart snarvei: det heksadesimale tallsystemet, med grunntall 16.

Heksadesimalt bruker sifrene 0 til 9 og deretter bokstavene A til F for verdiene 10 til 15. Så A er 10, B er 11, og slik videre opp til F som er 15. Det geniale er at hvert heksadesimalt siffer tilsvarer nøyaktig 4 bit. Det betyr at en hel byte på 8 bit kan skrives med bare to heksadesimale sifre. I stedet for åtte tegn klarer vi oss med to.

Du har sett dette i praksis uten kanskje å vite det. I HTML og webdesign skrives farger ofte heksadesimalt. Fargen hvit er #FFFFFF, der hver FF er 255 i desimalt, eller 1111111111111111 i binært. Vil du konvertere det heksadesimale tallet 2A16\text{2A}_{16}, deler du det opp: 2162_{16} blir 001020010_2 og A16\text{A}_{16} blir 101021010_2, så hele blir 00101010200101010_2. I desimalt er det 216+10=422 \cdot 16 + 10 = 42. Heksadesimalt er altså ikke et nytt og fremmed system, men en elegant og kompakt måte å pakke binære tall på.

📝Oppgave Quiz 3

Fra tall til tekst og bilder

Nå kommer det virkelig magiske: hvordan blir disse tallene til bokstaver og bilder? Svaret er at vi blir enige om koder.

For tekst bruker vi tegnsett. Det eldste vanlige er ASCII, som bruker 7 bit og dekker 128 tegn -- de engelske bokstavene, tallene og vanlige symboler. Her er for eksempel store A lik 65, store B lik 66, lille a lik 97, og sifferet 0 lik 48. Mellomrom er 32. Får du kodene 72, 101, 108, 108, 111, kan du slå dem opp og lese «Hello». Men ASCII har ikke plass til norske bokstaver, kinesiske tegn eller emoji. Derfor finnes Unicode, en gigantisk utvidelse som dekker over 140 000 tegn fra alle verdens skriftspråk -- inkludert æ, ø og å, og smilefjeset du nettopp sendte.

Bilder bygges opp annerledes. Et digitalt bilde er et rutenett av små fargepunkter som kalles piksler. Hver piksel beskrives med RGB-modellen -- tre verdier for rød, grønn og blå, hver fra 0 til 255. Ren rød er (255,0,0)(255, 0, 0), hvit er (255,255,255)(255, 255, 255) og svart er (0,0,0)(0, 0, 0). Hver fargeverdi tar 8 bit, så én piksel trenger 3×8=243 \times 8 = 24 bit. Det betyr at et ukomprimert bilde på 1920×10801920 \times 1080 piksler trenger 1920×1080×3=62208001920 \times 1080 \times 3 = 6\,220\,800 byte, altså omtrent 6 MB. Og et 4K-bilde på 3840×21603840 \times 2160 piksler? Da blir det 3840×2160×3=248832003840 \times 2160 \times 3 = 24\,883\,200 byte, rundt 24 MB ukomprimert. Nå skjønner du hvorfor bildefiler kan bli så store -- og hvorfor komprimering er så viktig.

📝Oppgave Quiz 4

Oppsummering

Vi har knekt maskinens grunnspråk. Alt bygger på bit -- en 0 eller en 1 -- og åtte av dem blir en byte som kan ha 256 verdier. Det binære tallsystemet med grunntall 2 lar oss representere alle tall, og vi lærte å oversette begge veier: binært til desimalt ved å summere posisjonsverdier, og desimalt til binært ved gjentatt deling på 2.

Fordi lange binærtall er uoversiktlige, bruker vi heksadesimalt som en kompakt snarvei, der hvert siffer er 4 bit -- nyttig blant annet for fargekoder som #FFFFFF. Til slutt så vi hvordan tall blir til mening: ASCII og Unicode gir hver bokstav en kode, og bilder bygges av piksler med RGB-verdier. Nå vet du at hver tekst, hver farge og hvert bilde du møter på skjermen, dypest sett bare er nuller og enere satt i system.

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.