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³ | 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:
- 0 × 2 + 1 = 1
- 1 × 2 + 0 = 2
- 2 × 2 + 1 = 5
- 5 × 2 + 1 = 11
- 11 × 2 + 0 = 22
- 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:
- 2F = 2 × 16 + 15 × 1 = 32 + 15 = 47
- 1A3 = 1 × 256 + 10 × 16 + 3 × 1 = 256 + 160 + 3 = 419
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:
- 11010110 → 1101 0110 → D6 (og D6 = 13 × 16 + 6 = 214, det samme tallet som ovenfor)
- 101101 → fyll ut til venstre til 0010 1101 → 2D (= 45)
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):
- 7 = 111 = rwx
- 5 = 101 = r-x
- 5 = 101 = r-x
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
- IPv4-adresser. Hvert av de fire tallene er én byte. 192.168.1.10 er 11000000.10101000.00000001.00001010 i binær; 192 = 128 + 64.
- Nettfarger. En hex-farge som #FF8800 består av tre byte: rød FF = 255, grønn 88 = 8 × 16 + 8 = 136, blå 00 = 0, så den tilsvarer rgb(255, 136, 0). Verktøyet Fargekonverterer gjør dette for alle farger.
- Tekst. I ASCII og Unicode har den store bokstaven A koden 65, som er 0x41 i hex og 01000001 i binær. Liten a er 97 (0x61, 01100001); de to skiller seg med 32, altså én enkelt bit.
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.
- Alle grunntall fra 2 til 64, både for inndata og for det valgfrie utgangsgrunntallet.
- Prefikser og store bokstaver: den godtar
0b,0oog0xnår de stemmer med grunntallet for inndata, og store bokstaver somFFopp til grunntall 36. Over grunntall 36 er små og store bokstaver ulike sifre. - Tydelige feilmeldinger: et ugyldig siffer, for eksempel en 2 i binær, viser hvilke sifre grunntallet tillater, og et
0x-prefiks med grunntall 10 ber deg bytte grunntallet til 16. - Bitlengde: den viser hvor mange bit tallet trenger, for eksempel 6 for 42 (101010).
- Store tall: den regner om svært lange heltall nøyaktig, for eksempel en hel 128-bits IPv6-adresse skrevet som ett tall.
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.