Hva et posisjonssystem er
I desimaltallet 4 095 er ikke 4-tallet verdt 4: det er verdt 4 000, fordi det står på tusenplassen. Hver posisjon ganger sifferet med en potens av 10 (1, 10, 100, 1 000 …). Det er et posisjonssystem, og grunntallet er antallet ulike siffer som brukes: ti i desimalsystemet.
Binær fungerer likt, men med grunntall 2: det finnes bare 0 og 1, og hver plass er verdt det dobbelte av den forrige. Heksadesimal bruker grunntall 16: de seksten sifrene er 0 til 9 og bokstavene A til F, og hver plass er verdt 16 ganger den forrige. Datamaskiner jobber i binær fordi en krets bare trenger å skille mellom to tilstander (av og på), og heksadesimal er en kort måte å skrive de bitene på.
| Posisjon (fra høyre til venstre) | Verdi i binær | Verdi i heksadesimal |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4 096 |
| 5. | 16 | 65 536 |
| 6. | 32 | 1 048 576 |
| 7. | 64 | 16 777 216 |
| 8. | 128 | 268 435 456 |
Fra binær til desimal, for hånd
Du skriver hvert siffer med verdien til plassen og legger sammen bare plassene der det står en 1. Eksempel med 1101: fra høyre mot venstre er plassene verdt 1, 2, 4 og 8.
- Skriv tallet og under det verdien til hver posisjon: 1 1 0 1 over 8 4 2 1.
- Se hva som står på hver plass: en 1 på 8-plassen, en 1 på 4-plassen, en 0 på 2-plassen og en 1 på 1-plassen.
- Se bort fra plassene med en 0 (her 2-plassen).
- Legg sammen: 8 + 4 + 0 + 1 = 13. Altså er 1101 i binær 13 i desimal.
Med flere siffer er det det samme: 11111111 er 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, den største verdien som får plass i 8 biter. Og 10110110 er 128 + 32 + 16 + 4 + 2 = 182.
Fra desimal til binær, med gjentatte delinger
Du deler tallet på 2 om og om igjen og noterer resten fra hver deling (alltid 0 eller 1) til kvotienten blir 0. Restene, lest nedenfra og opp, er det binære tallet. Eksempel med 45:
- 45 ÷ 2 = 22, rest 1
- 22 ÷ 2 = 11, rest 0
- 11 ÷ 2 = 5, rest 1
- 5 ÷ 2 = 2, rest 1
- 2 ÷ 2 = 1, rest 0
- 1 ÷ 2 = 0, rest 1
Leser du restene nedenfra og opp, får du 101101. For å kontrollere legger du sammen: 32 + 8 + 4 + 1 = 45.
Det finnes en alternativ metode som mange foretrekker: å trekke fra potenser av 2 fra størst til minst. For 200: 128 går opp (72 igjen), 64 går opp (8 igjen), 32 og 16 går ikke, men 8 går (0 igjen). Plassene som er brukt, er 128, 64 og 8, så 200 = 11001000.
Heksadesimal: seksten siffer og en tabell å ha for hånden
Siden det ikke finnes siffer for 10 til 15, brukes bokstavene A, B, C, D, E og F. Ett heksadesimalt siffer tilsvarer nøyaktig fire biter (en «nibble»), og det er derfor det er så praktisk: en byte på 8 biter skrives med bare to heksadesimale siffer.
For å gå fra heksadesimal til desimal ganger du hvert siffer med potensen av 16 for plassen og legger sammen. For eksempel er 3F = 3 × 16 + 15 = 63 og A3 = 10 × 16 + 3 = 163.
| Desimal | Binær (4 biter) | Oktal | Heksadesimal |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 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 |
Hvorfor heksadesimal brukes: byte, farger og adresser
En byte er 8 biter og går fra 0 til 255 (00000000 til 11111111). Å skrive biter for hånd er tregt og lett å gjøre feil i. I heksadesimal er den samme byten to tegn, fra 00 til FF. For å gå fra binær til heksadesimal deler du bitene i grupper på fire fra høyre og bytter hver gruppe ut med sifferet fra tabellen. Eksempel: 11010111 deles i 1101 og 0111, som er D og 7, så verdien er D7. Som desimaltall er det 13 × 16 + 7 = 215.
Det mest kjente tilfellet er nettfarger. I #FF8800 er det tre byte: FF for rødt (255), 88 for grønt (136) og 00 for blått (0). Det er en sterk oransje: alt rødt, litt over halvparten av det grønne og ikke noe blått. Heksadesimal dukker også opp i minneadresser, feilkoder og nettverksidentifikatorer.
Fra tekst til binær med ASCII
En datamaskin lagrer hver bokstav som et tall, og det tallet som biter. I ASCII-tabellen er A lik 65, som i binær med 8 biter er 01000001. Ordet «Hi» er to bokstaver: H er 72 (01001000) og i er 105 (01101001), så det skrives 01001000 01101001. «Hola» er 72, 111, 108 og 97, altså 01001000 01101111 01101100 01100001, eller i heksadesimal 48 6F 6C 61.
Verktøyet bruker UTF-8-koding: for enkle engelske bokstaver tar hvert tegn én byte på 8 biter, men en å, en ø, en bokstav med aksent eller en emoji tar flere byte og gir dermed mer enn 8 biter. For eksempel er å to byte: 11000011 10100101 (C3 A5 i heksadesimal).
Slik gjør du alt dette med verktøyet
Omregneren «Binær, desimal og hex» er nyttig for å kontrollere regningen din for hånd eller for å løse lange tall uten feil.
- Skriv tallet i feltet for tallsystemet: «Desimal (grunntall 10)», «Binær (grunntall 2)», oktal eller «Heksadesimal (grunntall 16)». De tre andre fylles ut av seg selv.
- Hvis sifferet ikke passer til tallsystemet (for eksempel en 2 i binær), sier verktøyet fra.
- For tekst skriver du den i feltet «Tekst» og ser «Binær (8 biter per tegn)» og heksadesimal per byte. Du kan også lime inn biter i grupper på 8 for å få tilbake teksten.
- For uvanlige tallsystemer bruker du «Hvilket som helst grunntall (2 til 36)»: du velger grunntallet du starter med, grunntallet du vil ha, og tallet.
Begrensningene: det regner bare om positive hele tall (uten desimaler og fortegn), og det setter ikke inn nuller foran for deg, så hvis du vil ha faste 8 biter, må du fylle ut selv (13 er 00001101). Ingenting av det du skriver, forlater nettleseren din.
Vanlige feil
- Å lese restene baklengs: i gjentatte delinger er den første resten sifferet lengst til høyre, ikke det lengst til venstre.
- Å glemme nullene foran når de trengs: 13 er 1101, men som byte er det 00001101. Det har betydning når lengden er en del av dataene, som i en farge eller en nettverksmaske.
- Å forveksle bokstaven O med null eller heksadesimal B (11) med en 8 når du kopierer. I heksadesimal har bokstavene samme verdi som store og små, men de er ikke det samme som et siffer.
- Å la prefikset 0x eller tegnet # bli stående når du regner om: de er bare merker for at tallet er heksadesimalt, og du må fjerne dem før du limer inn.
- Å tro at 10 i binær er ti: det er to. Det samme «10» er verdt 2, 10 eller 16 avhengig av tallsystemet.
Utregnede oppgaver å øve på
Prøv å løse hver av dem før du ser på svaret, og kontroller etterpå med verktøyet.
- Regn om 10110110 til desimal og heksadesimal. Svar: 128 + 32 + 16 + 4 + 2 = 182; i grupper på fire er 1011 0110 = B6.
- Regn om 200 til binær og heksadesimal. Svar: 11001000 og C8 (12 × 16 + 8 = 200).
- Regn om 7F til binær. Svar: 7 = 0111 og F = 1111, så 01111111, som i desimal er 127.
- Skriv «OK» i binær. Svar: O er 79 og K er 75, altså 01001111 01001011.
Vanlige spørsmål
Hvordan regner jeg om 1101 fra binær til desimal?
Du legger sammen verdiene til plassene der det står en 1: 8 + 4 + 1 = 13. Det andre sifferet fra høyre er en 0, så 2 er ikke med.
Hva er 255 i binær og heksadesimal?
255 er 11111111 i binær og FF i heksadesimal. Det er den største verdien som får plass i en byte på 8 biter.
Hvorfor bruker heksadesimal bokstaver?
Fordi det trenger seksten ulike symboler, og desimalsystemet bare gir ti (0 til 9). Derfor er A lik 10, B lik 11, C lik 12, D lik 13, E lik 14 og F lik 15.
Hvor mange ulike tall kan skrives med 8 biter?
256, fra 0 til 255. Generelt kan n biter representere 2 opphøyd i n verdier.
Regner verktøyet om negative tall eller tall med desimaler?
Nei, bare positive hele tall. For tekst bruker det UTF-8, så bokstaver med aksent og emojier gir mer enn 8 biter.