Tilbake
1.1

1.1 Tallsystemer og direkte konvertering

Binær, oktal, heksadesimal og desimal — og den raske **direkte** konverteringen via 3-bits (oktal) og 4-bits (hex) grupper, uten omveien via desimal.

45 min
8 oppgaver
Tallsystemerdirekte konvertering
Din fremgang i kapitlet
0 / 8 oppgaver

Forkunnskaper — sist du var her

Dette kapitlet kan leses uten forkunnskaper. Du trenger bare å kunne gange og dele med små tall.

Tre ting du møter med én gang, og som forklares fortløpende:

- Bit — ett siffer som er 0 eller 1.
- Base — hvor mange ulike sifre tallsystemet har (10 i vårt vanlige system, 2 i det binære).
- Plassverdi — at sifferets posisjon bestemmer hvor mye det er verdt.

Har du aldri sett binære tall før, er Tallsystemer og datarepresentasjon en roligere inngang. Du trenger den ikke — alt du skal kunne, står under.

Notasjons- og konstruksjonsliste

Løkke 1 — Plassverdi og base (~12 min)

Se på tallet 407. Du leser det uten å tenke: fire hundre og sju. Det du egentlig gjør, er å gange hvert siffer med en vekt: 4·100 + 0·10 + 7·1. Vektene er potenser av ti, og de vokser fra høyre mot venstre.

Alt et annet tallsystem gjør, er å bytte ut tiet. I det binære systemet er vektene 1, 2, 4, 8, 16 og så videre. I det heksadesimale er de 1, 16, 256. Reglene er ellers identiske.

Det er derfor du allerede kan konvertere: du kan plassverdiregelen fra barneskolen. Du har bare brukt den på ett tall.

Plassverdisystem

Et tallsystem der et siffers verdi bestemmes av posisjonen det står i, ikke bare av selve sifferet. Verdien av hele tallet er summen av hvert siffer ganget med sin plassverdi.

I 407₁₀ er det bakerste 7-tallet verdt 7, mens 4-tallet er verdt 400 — samme sifferstørrelse ville betydd noe annet på en annen plass.

Den faste feilslutningen: å tro at binære, oktale og heksadesimale tall følger andre regler enn desimaltall. De følger nøyaktig samme regel, med en annen base.

Base (grunntall)

Antallet ulike sifre et tallsystem bruker, og samtidig faktoren mellom to nabo-plassverdier.

Base 10 bruker sifrene 0–9 og har vektene 1, 10, 100. Base 2 bruker 0 og 1 og har vektene 1, 2, 4, 8. Base 8 bruker 0–7. Base 16 bruker 0–9 pluss A–F.

Merk sammenhengen: et system med base bb har alltid nøyaktig bb ulike sifre, og det største sifferet er b1b - 1. Ser du et 8-tall i et oktalt tall, er det skrevet feil.

Siffer

Ett enkelt symbol i et tall. Base 2 har to sifre (0 og 1), base 8 har åtte (0–7), base 16 har seksten (0–9 og A–F).

Skillet mellom siffer og tall er verdt å holde fast på: 10 er to sifre, men verdien er 2 i base 2, 8 i base 8, 10 i base 10 og 16 i base 16. Uten basen betyr sifferrekka ingenting.

Basesubskript-notasjonen

Skrivemåten som gjør det utvetydig hvilken base et tall skal leses i: basen skrives som et lite tall etter sifrene.

1101₂ er binært, 774₈ er oktalt, 42₁₀ er desimalt, 33₁₆ er heksadesimalt. I datateknologi skrives heksadesimale tall like ofte med prefikset 0x: 0x33.

Denne notasjonen brukes gjennomgående på eksamen, og fella er å overse subskriptet: 11 uten subskript kan være tre, ni, elleve eller sytten.

Bit

Ett binært siffer: 0 eller 1. Ordet er en sammentrekning av binary digit.

Med nn bit kan du skrive 2n2^n forskjellige verdier — 8 bit gir 256 verdier, fra 0 til 255.

Den faste feilslutningen: å blande bit og byte. En byte er åtte bit, og forskjellen på de to er en faktor 8 — den samme faktoren som feller flest i overføringstidsoppgavene i kap. 4.3.

Byte

En gruppe på åtte bit. Den vanligste enheten for å måle datamengder, og standardstørrelsen når eksamen ber deg tolke et bitmønster.

Én byte skrives som nøyaktig to heksadesimale sifre (0xFF = åtte ettall). Oktalt trengs tre sifre, men da bruker det øverste bare to av sine tre bit — åtte går ikke opp i treergrupper. Derfor er heksadesimal den naturlige kortformen for byte-verdier.

Filstørrelser oppgis i byte, mens overføringsrater oppgis i bit per sekund. Å holde de to fra hverandre er felle #2 i registeret.

✏️Eksempel 1: Fra binært til desimalt med plassverdi

Hva er 110101110₂ i titallssystemet?

Skriv vektene over bitene, fra høyre mot venstre: 1, 2, 4, 8, 16, 32, 64, 128, 256.

bit:    1    1    0    1    0    1    1    1    0 vekt:  256  128   64   32   16    8    4    2    1

Legg sammen vektene der bitet er 1:

256 + 128 + 32 + 8 + 4 + 2 = 430

Svar: 110101110₂ = 430₁₀.

Legg merke til at du aldri trenger å regne med nullene. Plassverdimetoden er å plukke ut ettallene og summere vektene deres — det er alt.

📝Oppgave 1

(Innsteg — plassverdi.) Regn om til titallssystemet.

a) 1011₂

b) 1101₂

c) 11010₂

Løkke 2 — Direkte mellom binær og oktal (~10 min)

Nå kommer teknikken som gjør deg rask. Åtte er . Det betyr at tre bit dekker nøyaktig like mange verdier som ett oktalt siffer: begge har åtte muligheter, 0 til 7.

Derfor kan du oversette gruppe for gruppe, uten å regne ut hva hele tallet er verdt. Det er den direkte veien, og det er den sensorveiledningen fra 2023 anbefaler.

📜Direkte konvertering binær ↔ oktal
Fra binær til oktal: del bitrekka i grupper på tre, regnet fra høyre. Fyll opp med ledende nuller i den venstre gruppa hvis den ikke blir full. Oversett hver gruppe for seg til ett siffer 0–7.

Fra oktal til binær: skriv hvert oktalsiffer som tre bit.

Oversettelsestabellen er hele apparatet:

BitSifferBitSiffer
00001004
00111015
01021106
01131117

Hvorfor det virker: hver gruppe på tre bit representerer en vekt som er en potens av 8. Grupperingen er bare en omskriving av plassverdiregelen — ingen informasjon går tapt, og ingen omregning skjer underveis.
Grupper alltid fra høyre. Grupperer du fra venstre, forskyver du alle vektene, og svaret blir feil.
✏️Eksempel 2: Binær til oktal, direkte

Skriv 110101110₂ som oktalt tall. Bruk den direkte metoden.

Del i grupper på tre fra høyre:

110 101 110
 6   5   6

Ni bit gir nøyaktig tre grupper, så det trengs ingen ledende nuller.

Svar: 110101110₂ = 656₈.

Kontroll mot eksempel 1. Vi vet at tallet er 430 i titallssystemet. Sjekker vi det oktale svaret: 6·64 + 5·8 + 6·1 = 384 + 40 + 6 = 430. Det stemmer.

Legg merke til hvor mye kortere den direkte veien var. Kontrollen tok tre multiplikasjoner; selve konverteringen tok tre oppslag.

📝Oppgave 2
Sjanger A

Konverter direkte, uten å gå via titallssystemet.

a) 1011011₂ til oktal.

b) 374₈ til binær.

📝Oppgave 3
Sjanger A

En medstudent konverterer 100111010₂ til oktal ved å gruppere fra venstre: 100 111 010 gir 4, 7, 2. Han får 472₈. En annen grupperer fra høyre og får samme svar. Forklar hvorfor de fikk samme svar her, og hvorfor metoden hans likevel er farlig.

Løkke 3 — Direkte mellom binær og heksadesimal (~10 min)

Samme idé, ny gruppestørrelse. Seksten er 2⁴, så fire bit dekker nøyaktig ett heksadesimalt siffer. Fire bit har et eget navn: en nibble.

Den eneste nye tingen er at base 16 trenger seks sifre til utover 0–9. Dem har man lånt fra alfabetet.

Nibble

En gruppe på fire bit. Navnet er et ordspill på byte — en nibble er en «liten bit» av en byte, og det går to nibbler på én byte.

En nibble tilsvarer nøyaktig ett heksadesimalt siffer, og kan ha 16 verdier: 0000 til 1111, altså 0 til 15.

Dette er grunnen til at byte-verdier nesten alltid skrives heksadesimalt: én byte blir nøyaktig to sifre, uten rest.

De heksadesimale sifferverdiene A–F

Base 16 trenger seksten sifre, men vi har bare ti tallsymboler. De seks siste er derfor bokstaver:

SifferABCDEF
Verdi101112131415
Nibble101010111100110111101111

Den faste feilen er å forskyve rekka og tro at A er 11 fordi A er den første bokstaven. A er 10, fordi verdiene 0–9 allerede er brukt opp av tallsymbolene.
Nyttig holdepunkt: F er 15, altså 1111 — alle fire bit satt.

0x-prefikset

Skrivemåten som markerer at et tall er heksadesimalt: 0x foran sifrene. 0x1AE betyr det samme som 1AE₁₆.

Prefikset kommer fra programmeringsspråket C og brukes i hele datateknologien — i minneadresser, fargekoder og maskinkode.

Den faste feilslutningen: å lese 0x som en del av verdien. Nullen og x-en er bare et merke, akkurat som subskriptet.

📜Direkte konvertering binær ↔ heksadesimal
Fra binær til heksadesimal: del bitrekka i grupper på fire, regnet fra høyre. Fyll opp med ledende nuller i den venstre gruppa. Oversett hver nibble til ett siffer 0–9 eller A–F.

Fra heksadesimal til binær: skriv hvert siffer som fire bit.

NibbleSifferNibbleSiffer
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F

Nøkkelen er å ikke blande gruppestørrelsene: tre bit for oktal, fire bit for heksadesimal. Bytter du om, får du et tall som ser plausibelt ut, men er feil — og på en eksamen med minuspoeng er «plausibelt, men feil» det dyreste svaret som finnes.
✏️Eksempel 3: Begge veier på heksadesimal
a) Skriv 110101110₂ heksadesimalt.

b) Skriv 0x3B7 binært, og finn verdien i titallssystemet.

a) Grupper fra høyre i firere: 1 1010 1110. Den venstre gruppa mangler tre bit, så fyll på: 0001 1010 1110.

0001 1010 1110
  1    A    E

Svar: 110101110₂ = 0x1AE.

Kontroll mot eksempel 1, der vi fant 430: 1·256 + 10·16 + 14 = 256 + 160 + 14 = 430. Stemmer.

b) Hvert siffer blir en nibble: 3 → 0011, B → 1011, 7 → 0111.

  3    B    7
0011 1011 0111

Svar: 0x3B7 = 001110110111₂, normalt skrevet 1110110111₂.

Verdien: 3·256 + 11·16 + 7 = 768 + 176 + 7 = 951.

Legg merke til hvor lite arbeid del b) var: tre oppslag i tabellen. Hadde du gått via titallssystemet, måtte du først regnet ut 951 og deretter delt på 2 ti ganger.

📝Oppgave 4
Sjanger A

Konverter direkte.

a) 11111100₂ til heksadesimal.

b) 0x5C til binær.

📝Oppgave 5
Sjanger A

Skriv 2AF₁₆ både binært og oktalt. Gå ikke via titallssystemet i noen av stegene.

Løkke 4 — Fra titallssystemet: gjentatt divisjon (~8 min)

Ti er ingen potens av to. Derfor finnes det ingen grupperingssnarvei mellom base 10 og base 2 — her må du regne.

Metoden er mekanisk: del gjentatte ganger på basen og les restene baklengs.

📜Gjentatt divisjon med rest

For å skrive et desimaltall NN i base bb:

1. Del NNbb. Noter resten.
2. Fortsett med kvotienten: del den på bb, noter resten.
3. Gjenta til kvotienten er 0.
4. Les restene nedenfra og opp — det er tallet i base bb.

Hvorfor restene leses baklengs: den første resten du får, er verdien på plassen med vekt 1, altså det bakerste sifferet. Den siste resten hører til den høyeste vekten.

Snarvei for oktal og heksadesimal: konverter til binært først, og grupper. Å dele gjentatte ganger på 16 i hodet er mye mer feilutsatt enn å dele på 2 og deretter slå opp i nibble-tabellen.

✏️Eksempel 4: 205 i tre baser

Skriv 205₁₀ binært, oktalt og heksadesimalt.

Binært, ved gjentatt divisjon på 2:

StegRegnestykkeKvotientRest
1205 ÷ 21021
2102 ÷ 2510
351 ÷ 2251
425 ÷ 2121
512 ÷ 260
66 ÷ 230
73 ÷ 211
81 ÷ 201

Les restene nedenfra og opp: 11001101.
205₁₀ = 11001101₂.
Oktalt og heksadesimalt — nå grupperer vi bare.
oktal:  011 001 101   ->  3 1 5 hex:    1100 1101     ->  C D
205₁₀ = 315₈ = 0xCD.
Kontroll: 3·64 + 1·8 + 5 = 192 + 8 + 5 = 205, og 12·16 + 13 = 192 + 13 = 205. Begge stemmer.
Merk hvor lite ekstraarbeid de to siste konverteringene var. Én divisjonsrekke, to grupperinger — aldri to divisjonsrekker.
📝Oppgave 6
Sjanger A

Skriv 137₁₀ binært, oktalt og heksadesimalt. Bruk divisjon bare én gang.

Løkke 5 — Eksamensnivå: «hvilke av disse er like?» (~10 min)

Den vanligste innpakningen på eksamen er ikke «konverter dette tallet». Det er en liste med tall skrevet i ulike baser, og spørsmålet: hvilke av dem er like?

Formen er svarform F1: flere alternativer kan være riktige samtidig. Under negativ poenggiving betyr det at du må vurdere hvert alternativ for seg — og kunne si hvorfor de gale er gale.

Oppskriften er alltid den samme: bring alt til én felles base før du sammenligner. Hvilken base du velger, er opp til deg, men binær er ofte lettest når kandidatene er oktale og heksadesimale.

✏️Eksempel 5: Eksamensform — hvilke er lik 101101₂?

Svarform F1: kryss av alle alternativene som er lik 101101₂.

a) 55₈

b) 0x2D

c) 45₁₀

d) 0x2B

Først: hva er 101101₂? Vi trenger ikke titallsverdien for å sammenligne med a) og b), men den trengs for c). Vektene 32, 8, 4, 1 er satt: 32 + 8 + 4 + 1 = 45.

a) Riktig. Grupper 101101 i treere fra høyre: 101 101 gir 5 og 5, altså 55₈. Alternativet stemmer.

b) Riktig. Grupper i firere: 10 1101 fylles til 0010 1101, som gir 2 og D. Altså 0x2D. Stemmer.

c) Riktig. Titallsverdien er 45, som regnet ut over.

d) Galt. 0x2B er 0010 1011₂, altså 101011₂. Sammenlignet med 101101₂ er de to bitene med vekt 2 og 4 byttet om. I titallssystemet: 2·16 + 11 = 43, ikke 45. Alternativet ligger to unna og er nettopp derfor en god distraktor — det ser riktig ut hvis du slurver med rekkefølgen i nibbelen.

Fasit: a, b og c. Tre av fire alternativer var riktige.

Metanotat. Dette er den viktigste vanen i faget: du fant ikke «det riktige svaret» — du vurderte fire påstander og begrunnet hver. Hadde du krysset av kun a) fordi du sluttet å lese, ville du fått ett av tre poeng. Hadde du krysset av alt, ville du fått null.

📝Oppgave 7
Eksamensnivå, sjanger A

Kryss av alle alternativene som er lik 10011100₂, og begrunn hvert av de fire.

a) 0x4E

b) 0x9C

c) 156₁₀

d) 234₈

En variant: tallsystemer med egne symboler

Noen ganger snus oppgaven på hodet: du får et system med en uvanlig base og egne symboler, og skal vise at du forstår prinsippet, ikke bare de fire vanlige basene.

Behandle det nøyaktig som ethvert annet plassverdisystem: finn ut hvilken verdi hvert symbol har, og bruk plassverdiregelen.

Egendefinert tallsystem

Et plassverdisystem med en oppgitt base og et oppgitt sett symboler, der symbolene ikke nødvendigvis er de vanlige sifrene.

Eksempel: base 6 med symbolene 0, 1, 2, A, B, C, der A = 3, B = 4 og C = 5. Da er BA2₆ lik 4·36 + 3·6 + 2 = 144 + 18 + 2 = 164.

Alt fungerer som før: det største symbolet har verdien base minus 1, vektene er potenser av basen, og gjentatt divisjon virker for veien tilbake. Den faste feilen er å lete etter en snarvei — den finnes bare når basen er en potens av to.

📝Oppgave 8
Eksamensnivå, sjanger A

Et tallsystem har base 6 og bruker symbolene 0, 1, 2, A, B, C, der A = 3, B = 4 og C = 5.

a) Hvilken verdi har CAB₆ i titallssystemet?

b) Skriv 100₁₀ i dette systemet.

Begrepsbank til eksamen

Begrepsbanken er flashcard- og repetisjonsstoff — den gjentar det du nettopp har lest. Hopp trygt over ved førstegangslesing; tidsanslaget for kapitlet gjelder kjernestoffet.

Totallssystemet (binært)

Plassverdisystemet med base 2. Sifrene er 0 og 1, og vektene er 1, 2, 4, 8, 16, 32 og videre oppover.

Dette er systemet maskinvaren faktisk arbeider i: hvert siffer svarer til en fysisk tilstand som er på eller av.

Skrivemåte: 1101₂. Å lese 1101 uten subskript som «ett tusen ett hundre og én» er den vanligste startfeilen.

Åttetallssystemet (oktalt)

Plassverdisystemet med base 8. Sifrene er 0 til 7, og vektene er 1, 8, 64, 512.

Oktale tall brukes som kortform for bitmønstre fordi tre bit går nøyaktig opp i ett oktalsiffer.

Ser du et 8-tall eller 9-tall i et tall merket med subskript 8, er tallet skrevet feil — det største lovlige sifferet er 7.

Sekstentallssystemet (heksadesimalt)

Plassverdisystemet med base 16. Sifrene er 0–9 og A–F, og vektene er 1, 16, 256, 4096.

Dette er standardkortformen for byte-verdier, minneadresser og fargekoder, fordi én byte blir nøyaktig to sifre.

Skrivemåte: 0x1AE eller 1AE₁₆.

Titallssystemet (desimalt)

Plassverdisystemet med base 10 — det vi bruker til daglig. Sifrene er 0 til 9, og vektene er 1, 10, 100.

I datateknologi er dette systemet ofte et mellomledd du skal unngå: siden 10 ikke er en potens av 2, finnes ingen grupperingssnarvei mellom base 10 og base 2.

Du trenger titallssystemet når oppgaven oppgir eller ber om en desimalverdi — ikke som mellomstasjon mellom to andre baser.

Plassverdi (vekt)

Verdien én enhet på en gitt sifferplass er verdt: basen opphøyd i posisjonen, talt fra høyre med start på 0.

I base 2 er vektene 1, 2, 4, 8, 16, 32, 64, 128. I base 16 er de 1, 16, 256, 4096.

Å kunne toerpotensene opp til 128 utenat er den enkleste enkeltinvesteringen i hele faget: den brukes i konvertering, i to-er komplement, i cache-regning og i subnetting.

Mest signifikante bit

Bitet lengst til venstre i et binærtall — det med den høyeste vekten.

I en byte er dette bitet i posisjon 7, med vekten 128. Det er også bitet som i kap. 1.3 blir fortegnsbit når byten tolkes med fortegn.

Forkortelsen MSB brukes ofte, av engelsk most significant bit.

Minst signifikante bit

Bitet lengst til høyre i et binærtall — det med vekten 1.

Det er dette bitet som avgjør om tallet er partall eller oddetall, og det er den første resten du får når du deler på 2 i divisjonsmetoden.

Forkortelsen LSB brukes ofte, av engelsk least significant bit.

Ledende nuller

Nuller helt til venstre i et tall, som ikke endrer verdien: 0011₂ og 11₂ er begge lik 3.

De er likevel nyttige når du grupperer: fyll den venstre gruppa opp til full størrelse med ledende nuller, så blir oversettelsen entydig.

Ledende nuller er også grunnen til at en byte alltid skrives med åtte bit selv om verdien er liten — 00000101₂ viser at tallet ligger i en byte.

Gruppering fra høyre

Regelen om at bitgrupper alltid telles fra det minst signifikante bitet og oppover, slik at en eventuell ufullstendig gruppe havner til venstre.

Grunnen er at vektene bygges opp fra høyre. Starter du grupperingen til venstre, forskyves alle vektene, og resultatet blir feil for alle tall der antall bit ikke går opp i gruppestørrelsen.

Dette er den vanligste enkeltfeilen i konvertering — se oppgave 3 for et regnestykke som viser hvor galt det går.

Direkte konvertering

Metoden der du oversetter mellom to baser ved å gruppere bit, uten å regne ut tallets verdi i titallssystemet underveis.

Den virker mellom base 2 og enhver base som er en potens av 2: tre bit per oktalsiffer, fire bit per heksadesimalt siffer.

Sensorveiledningen fra 2023 fremhever denne metoden eksplisitt som raskere og mindre feilutsatt enn omveien via titallssystemet.

Omveien via titallssystemet

Å konvertere fra base A til base B ved først å regne ut tallets desimalverdi og deretter dele gjentatte ganger.

Metoden gir riktig svar, men krever mange flere regnesteg enn direkte gruppering — og hvert steg er et sted å bomme. Dette er felle #6 i registeret.

Bruk den bare når titallssystemet faktisk er den ene enden av konverteringen.

Antall verdier med n bit

Med nn bit kan du skrive 2n2^n ulike verdier, fra 0 til 2n12^n - 1.

Fire bit gir 16 verdier (0–15), åtte bit gir 256 (0–255), ti bit gir 1024.

Denne sammenhengen dukker opp igjen i kap. 4.2, der antallet tildelbare adresser i et subnett er 2n22^n - 2 — de samme toerpotensene, minus to reserverte adresser.

Sortering på tvers av baser

Oppgavetypen der du får en liste tall skrevet i ulike baser og skal rangere dem etter størrelse.

Oppskriften: bring alle til samme base før du sammenligner — vanligvis titallssystemet, siden du skal rangere verdier og ikke mønstre.

Den faste feilen er å sammenligne sifferrekkene direkte. 100₂ ser større ut enn 9₁₀, men er 4. Antall sifre sier ingenting om verdien når basene er ulike.

Bitmønster

Selve rekka av nuller og ettall, uavhengig av hvordan den skal tolkes.

Skillet er viktigere enn det ser ut: 10110₂ er et bitmønster, mens «22» er en tolkning av det som et tall uten fortegn. Det samme mønsteret kan også tolkes som et tegn, en farge eller en instruksjon.

Dette er forberedelsen til kap. 1.3, der én og samme byte har to lovlige talltolkninger samtidig — og til kap. 1.5, der et bitmønster i minnet er en instruksjon og et tall på én gang.

Repetisjon — sitter teknikken?

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.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Universitetet i Oslo. Dette er ikke offisielt studiemateriell. Les mer.