Slik gjør du om binær til desimal (og hex): steg for steg

For å gjøre om binær til desimal ganger du hver bit med plassverdien sin og legger sammen resultatene. Plassverdiene er potenser av 2 som dobles fra høyre mot venstre: 1, 2, 4, 8, 16 og så videre. For eksempel er 1011 i binær 1×8 + 0×4 + 1×2 + 1×1 = 8 + 0 + 2 + 1 = 11.

Prøv gratis: Heltall base-konverterer Gratis å bruke, ingen konto nødvendig.

Denne guiden viser to metoder for å regne om fra binær til desimal, hvordan du går motsatt vei fra desimal til binær, hva heksadesimal er og hvorfor programmerere bruker det, og hvordan du bytter mellom binær, hex og oktal uten kalkulator. Alle eksemplene nedenfor er kontrollert med kode. Vil du sjekke dine egne tall mens du leser, kan du lime dem inn i den gratis binærkonverteren.

Slik leser du binære tall: plassverdier

Binærkode er informasjon skrevet med bare to symboler, 0 og 1. Datamaskiner bruker den fordi kretsene deres arbeider med to tilstander, for eksempel lav og høy spenning. Hvert binært siffer kalles en bit, og en gruppe på 8 bit er en byte.

Binærsystemet er et posisjonssystem, akkurat som titallssystemet. I desimal er hver posisjon verdt 10 ganger posisjonen til høyre for den (enere, tiere, hundrere). I binær er hver posisjon verdt 2 ganger posisjonen til høyre for den:

Posisjon (fra høyre) 8. 7. 6. 5. 4. 3. 2. 1.
Toerpotens 2⁷ 2⁶ 2⁵ 2⁴ 2⁰
Plassverdi 128 64 32 16 8 4 2 1

En 1 betyr «ta med denne plassverdien», og en 0 betyr «hopp over den».

Slik gjør du om binær til desimal steg for steg

Metode 1: legg sammen plassverdiene

Ta det binære tallet 11010110. Skriv plassverdiene under bitene, behold dem der biten er 1, og legg dem sammen:

Bit 1 1 0 1 0 1 1 0
Plassverdi 128 64 32 16 8 4 2 1
Bit × verdi 128 64 0 16 0 4 2 0

128 + 64 + 16 + 4 + 2 = 214. Altså er 11010110₂ = 214₁₀. Det lille senkede tallet viser grunntallet når det ikke er opplagt.

Metode 2: doble og legg til

Denne metoden trenger ingen tabell. Start med 0 og les bitene fra venstre mot høyre: doble den løpende summen og legg til den aktuelle biten.

For 101101:

  1. 0 × 2 + 1 = 1
  2. 1 × 2 + 0 = 2
  3. 2 × 2 + 1 = 5
  4. 5 × 2 + 1 = 11
  5. 11 × 2 + 0 = 22
  6. 22 × 2 + 1 = 45

Altså er 101101₂ = 45. Kontroller med metode 1: 32 + 8 + 4 + 1 = 45.

Slik gjør du om desimal til binær

Gjentatt deling med 2

Del tallet på 2, skriv ned resten (0 eller 1), og gjenta med kvotienten til den blir 0. Les deretter restene nedenfra og opp. Her er 156:

Divisjon Kvotient Rest
156 ÷ 2 78 0
78 ÷ 2 39 0
39 ÷ 2 19 1
19 ÷ 2 9 1
9 ÷ 2 4 1
4 ÷ 2 2 0
2 ÷ 2 1 0
1 ÷ 2 0 1

Leser du oppover, får du 156 = 10011100₂. Kontroll: 128 + 16 + 8 + 4 = 156. Den vanligste feilen er å lese restene ovenfra og ned, som gir bitene i omvendt rekkefølge.

Trekk fra toerpotenser

For små tall går det ofte raskere å ta den største toerpotensen som får plass, trekke den fra og gjenta. For 100: 64 får plass (100 − 64 = 36), deretter 32 (36 − 32 = 4), deretter 4 (4 − 4 = 0). Sett en 1 under 64, 32 og 4 og en 0 alle andre steder: 100 = 1100100₂.

Hva er heksadesimal?

Heksadesimal (hex) er et tallsystem med grunntall 16. Det trenger 16 sifre, så etter 0–9 brukes bokstavene A–F for verdiene 10 til 15: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Hver posisjon er verdt 16 ganger posisjonen til høyre for den: 1, 16, 256, 4 096 og så videre.

Programmerere bruker hex fordi det passer nøyaktig med binær. Fire bit har 16 mulige mønstre (0000 til 1111), så ett hex-siffer er nøyaktig 4 bit, og to hex-sifre er nøyaktig én byte. Den største byten, 11111111, er ganske enkelt FF i hex, mens den i desimal er 255, et tall som ikke avslører bitmønsteret. Derfor skrives minneadresser, fargekoder, MAC-adresser og IPv6-adresser i hex.

Slik gjør du om hex til desimal

Bruk den samme plassverdimetoden med potenser av 16, og bytt ut bokstavene med verdiene deres:

Slik gjør du om desimal til heksadesimal

Desimal til heksadesimal fungerer som desimal til binær, men du deler på 16. Rester fra 10 til 15 blir bokstavene A til F. Her er 1000:

Divisjon Kvotient Rest
1000 ÷ 16 62 8
62 ÷ 16 3 14 = E
3 ÷ 16 0 3

Leser du restene nedenfra og opp, får du 1000 = 3E8₁₆. Kontroll: 3 × 256 + 14 × 16 + 8 = 768 + 224 + 8 = 1000.

Binær til heksadesimal: del bitene i grupper på fire

Siden ett hex-siffer er fire bit, krever omregning fra binær til heksadesimal ingen regning i det hele tatt. Del det binære tallet i grupper på fire bit (kalt nibbles), med start fra høyre, og bytt ut hver gruppe ved hjelp av denne tabellen:

Binær Hex Desimal Binær Hex Desimal
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 A 10
0011 3 3 1011 B 11
0100 4 4 1100 C 12
0101 5 5 1101 D 13
0110 6 6 1110 E 14
0111 7 7 1111 F 15

Eksempler:

Hex til binær fungerer motsatt: bytt ut hvert hex-siffer med de fire bitene sine. 3E8 → 0011 1110 1000 → 1111101000 når du fjerner de innledende nullene.

Kort om oktal

Oktal har grunntall 8 og bruker sifrene 0–7. Det fungerer som hex, men med grupper på tre bit, fordi 2³ = 8. Den mest kjente bruken i dag er filrettigheter i Unix. I chmod 755 er hvert siffer tre rettighetsbit (lese, skrive, kjøre):

Altså er 755 i oktal bitmønsteret 111 101 101, som er 493 i desimal. Verktøyet Chmod-kalkulator gjør avkryssede rettighetsbokser om til oktaltallet, eller viser hvilke rettigheter et tall som 755 setter.

Hvor du møter disse omregningene

Prefikser: 0b, 0x og 0o

I kode forteller et prefiks kompilatoren hvilket grunntall en tallverdi bruker:

Prefiks Grunntall Eksempel Desimalverdi
0b Binær (2) 0b1011 11
0o Oktal (8) 0o755 493
0x Heksadesimal (16) 0x3E8 1000

0x fungerer i nesten alle språk. 0b støttes i Python, JavaScript, Java, C# og C++. 0o brukes av Python og JavaScript, mens C og C++ skriver oktal med en vanlig innledende null, så 0755 i C er 493, ikke 755.

De fleste språk kan også regne om strenger for deg:

# Python
int("1011", 2)      # 11
bin(156)            # '0b10011100'
hex(1000)           # '0x3e8'
int("3E8", 16)      # 1000

// JavaScript
parseInt("1011", 2)     // 11
(1000).toString(16)     // "3e8"
Number("0b1011")        // 11

En felle: i JavaScript returnerer parseInt("0b1011") 0, fordi parseInt stopper ved det første tegnet den ikke kan lese, og ikke forstår prefikset 0b. Fjern prefikset og oppgi grunntallet (radix) i stedet, slik det er forklart i MDN-referansen for parseInt.

Litt om negative tall

Datamaskiner lagrer vanligvis negative heltall som toerkomplement. For å skrive −5 med 8 bit starter du fra 5 = 00000101, snur hver bit og får 11111010, og legger deretter til 1: 11111011. Lest som et tall uten fortegn er det samme mønsteret 251 (256 − 5), eller FB i hex. Derfor kan den samme byten bety −5 eller 251, avhengig av om programmet behandler den som et tall med fortegn.

Omregningstabell for binær, desimal, oktal og heksadesimal

Desimal Binær Oktal Hex
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
32 100000 40 20
64 1000000 100 40
100 1100100 144 64
127 1111111 177 7F
128 10000000 200 80
255 11111111 377 FF
256 100000000 400 100

Regn om mellom alle tallsystemer med binærkonverteren

Den gratis binærkonverteren kjører i nettleseren. Skriv inn et tall og velg grunntallet, så viser den verdien i binær, oktal, desimal og heksadesimal samtidig, pluss ett valgfritt utgangsgrunntall.

Noen begrensninger du bør kjenne til: den regner bare om ikke-negative heltall, så et minustegn eller et desimalkomma blir avvist; hex-utdata skrives med små bokstaver og uten innledende nuller; og raden «Base64 (64)» er et tall med grunntall 64 som bruker sifrene 0–9, a–z, A–Z, + og /, ikke Base64-tekstkoding.

Vanlige spørsmål

Hva er det største tallet du kan lagre i 8 bit?

255, skrevet som 11111111 i binær eller FF i hex. Åtte bit gir 2⁸ = 256 ulike mønstre, som dekker 0 til 255. Seksten bit når 65 535, og hver ekstra bit dobler området.

Hvorfor bruker programmerere heksadesimal i stedet for desimal?

Fordi hvert hex-siffer svarer til nøyaktig fire bit, kan du lese bitmønsteret rett ut av hex-sifrene. En byte er alltid to hex-sifre (00 til FF). Desimal passer ikke slik: 255 og 256 ser like ut i desimal, men er 11111111 og 100000000 i binær.

Hvordan gjør du om en binær brøk til desimal?

Bitene etter det binære kommaet er verdt 1/2, 1/4, 1/8 og så videre. Altså er 101.11₂ = 4 + 1 + 0,5 + 0,25 = 5,75. Mange desimalbrøker, som 0,1, har ingen eksakt binær form, og derfor er 0.1 + 0.2 ikke nøyaktig 0.3 i de fleste programmeringsspråk. Binærkonverteren håndterer bare heltall.

Er binærkode det samme som ASCII?

Nei. Binær er tallsystemet; ASCII er en tabell som tildeler hvert tegn et tall. Bokstaven A har ASCII-kode 65, og det tallet lagres som bitene 01000001.

Prøv gratis: Heltall base-konverterer Gratis å bruke, ingen konto nødvendig.