Vad är ett positionssystem
I det decimala talet 4 095 är 4:an inte värd 4: den är värd 4 000, eftersom den står på tusentalets plats. Varje position multiplicerar siffran med en potens av 10 (1, 10, 100, 1 000 …). Det är ett positionssystem, och basen är antalet olika siffror som används: tio i det decimala systemet.
Det binära fungerar likadant, men med bas 2: det finns bara 0 och 1, och varje plats är värd dubbelt så mycket som den förra. Det hexadecimala använder bas 16: de sexton siffrorna är 0 till 9 och bokstäverna A till F, och varje plats är värd 16 gånger den förra. Datorer arbetar binärt eftersom en krets bara behöver skilja på två tillstånd (av och på), och det hexadecimala är ett kort sätt att skriva dessa bitar.
| Position (från höger till vänster) | Värde i binärt | Värde i hexadecimalt |
|---|---|---|
| 1:a | 1 | 1 |
| 2:a | 2 | 16 |
| 3:e | 4 | 256 |
| 4:e | 8 | 4 096 |
| 5:e | 16 | 65 536 |
| 6:e | 32 | 1 048 576 |
| 7:e | 64 | 16 777 216 |
| 8:e | 128 | 268 435 456 |
Från binärt till decimalt, för hand
Du skriver varje siffra med värdet för sin plats och adderar bara de platser där det står en 1:a. Exempel med 1101: från höger till vänster är platserna värda 1, 2, 4 och 8.
- Skriv talet och under det värdet för varje position: 1 1 0 1 över 8 4 2 1.
- Titta vad som står på varje plats: en 1:a på 8:ans plats, en 1:a på 4:ans, en 0:a på 2:ans och en 1:a på 1:ans.
- Bortse från platser med en 0:a (här 2:ans).
- Addera: 8 + 4 + 0 + 1 = 13. Alltså är 1101 binärt 13 decimalt.
Med fler siffror är det likadant: 11111111 är 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, det största värdet som ryms i 8 bitar. Och 10110110 är 128 + 32 + 16 + 4 + 2 = 182.
Från decimalt till binärt, med upprepad division
Du delar talet med 2 om och om igen och skriver upp resten från varje division (alltid 0 eller 1) tills kvoten blir 0. Resterna, lästa nerifrån och upp, är det binära talet. Exempel 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
Läser du resterna nerifrån och upp får du 101101. För att kontrollera adderar du: 32 + 8 + 4 + 1 = 45.
Det finns en alternativ metod som många föredrar: dra ifrån tvåpotenser från störst till minst. För 200: 128 ryms (72 kvar), 64 ryms (8 kvar), 32 och 16 ryms inte, men 8 ryms (0 kvar). De använda platserna är 128, 64 och 8, så 200 = 11001000.
Hexadecimalt: sexton siffror och en tabell att ha nära till hands
Eftersom det inte finns siffror för 10 till 15 används bokstäverna A, B, C, D, E och F. En hexadecimal siffra motsvarar exakt fyra bitar (en ”nibble”), och därför är systemet så praktiskt: en byte, på 8 bitar, skrivs med bara två hexadecimala siffror.
För att gå från hexadecimalt till decimalt multiplicerar du varje siffra med 16-potensen för sin plats och adderar. Till exempel är 3F = 3 × 16 + 15 = 63 och A3 = 10 × 16 + 3 = 163.
| Decimalt | Binärt (4 bitar) | Oktalt | Hexadecimalt |
|---|---|---|---|
| 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 |
Varför hexadecimalt används: byte, färger och adresser
En byte är 8 bitar och går från 0 till 255 (00000000 till 11111111). Att skriva bitar för hand är långsamt och ger lätt fel; hexadecimalt är samma byte två tecken, från 00 till FF. För att gå från binärt till hexadecimalt delar du bitarna i grupper om fyra från höger och byter ut varje grupp mot sin siffra i tabellen. Exempel: 11010111 delas i 1101 och 0111, som är D och 7, så det blir D7. Decimalt är det 13 × 16 + 7 = 215.
Det mest kända fallet är webbfärger. I #FF8800 finns tre byte: FF för rött (255), 88 för grönt (136) och 00 för blått (0). Det är en intensiv orange: allt rött, lite mer än hälften av det gröna och inget blått. Hexadecimalt förekommer också i minnesadresser, felkoder och nätverksidentifierare.
Från text till binärt med ASCII
En dator sparar varje bokstav som ett tal, och det talet som bitar. I ASCII-tabellen är A 65, vilket i binärt med 8 bitar är 01000001. Ordet ”Hi” är två bokstäver: H är 72 (01001000) och i är 105 (01101001), så det skrivs 01001000 01101001. Med ”Hola” blir det 72, 111, 108 och 97, alltså 01001000 01101111 01101100 01100001, eller hexadecimalt 48 6F 6C 61.
Verktyget använder teckenkodningen UTF-8: för grundläggande engelska bokstäver tar varje tecken en byte på 8 bitar, men ett å, ett ö eller en emoji tar flera byte och ger därför mer än 8 bitar. Till exempel är å två byte: 11000011 10100101 (C3 A5 hexadecimalt).
Så gör du allt det här med verktyget
Omvandlaren ”Binärt, decimalt och hex” är bra för att kontrollera dina uträkningar för hand eller för att lösa långa tal utan fel.
- Skriv talet i fältet för dess talsystem: ”Decimalt (bas 10)”, ”Binärt (bas 2)”, oktalt eller ”Hexadecimalt (bas 16)”. De andra tre fylls i av sig själva.
- Om en siffra inte hör till talsystemet (till exempel en 2:a i binärt) varnar verktyget dig.
- För text skriver du den i fältet ”Text” och tittar på ”Binärt (8 bitar per tecken)” och hexadecimalt per byte. Du kan också klistra in bitar i grupper om 8 för att få tillbaka texten.
- För ovanliga talsystem använder du ”Valfritt talsystem (2 till 36)”: du väljer startbas, målbas och talet.
Begränsningarna: det omvandlar bara icke-negativa heltal (inga decimaler eller tecken) och lägger inte till inledande nollor åt dig, så om du vill ha fasta 8 bitar måste du fylla på för hand (13 är 00001101). Inget av det du skriver lämnar din webbläsare.
Vanliga misstag
- Läsa resterna bakvänt: vid upprepad division är den första resten siffran längst till höger, inte den längst till vänster.
- Glömma inledande nollor när de behövs: 13 är 1101, men som byte är det 00001101. Det spelar roll när längden är en del av uppgiften, som i en färg eller en nätmask.
- Blanda ihop bokstaven O med nollan eller hexadecimalt B (11) med en 8:a när du kopierar. I hexadecimalt har bokstäverna samma värde som versaler och gemener, men de är inte detsamma som en siffra.
- Lämna kvar prefixet 0x eller tecknet # vid omvandling: de är bara markeringar för att talet är hexadecimalt och måste tas bort innan du klistrar in.
- Tro att 10 binärt är tio: det är två. Samma ”10” är värt 2, 10 eller 16 beroende på talsystem.
Uträknade övningar att träna på
Försök lösa var och en innan du tittar på svaret och kontrollera sedan med verktyget.
- Omvandla 10110110 till decimalt och hexadecimalt. Svar: 128 + 32 + 16 + 4 + 2 = 182; i grupper om fyra, 1011 0110 = B6.
- Omvandla 200 till binärt och hexadecimalt. Svar: 11001000 och C8 (12 × 16 + 8 = 200).
- Omvandla 7F till binärt. Svar: 7 = 0111 och F = 1111, alltså 01111111, vilket decimalt är 127.
- Skriv ”OK” binärt. Svar: O är 79 och K är 75, alltså 01001111 01001011.
Vanliga frågor
Hur omvandlar jag 1101 från binärt till decimalt?
Du adderar värdena för de platser där det står en 1:a: 8 + 4 + 1 = 13. Den andra siffran från höger är en 0:a, så 2:an adderas inte.
Hur mycket är 255 binärt och hexadecimalt?
255 är 11111111 binärt och FF hexadecimalt. Det är det största värdet som ryms i en byte på 8 bitar.
Varför använder hexadecimalt bokstäver?
Därför att det behöver sexton olika symboler och det decimala systemet bara ger tio (0 till 9). Därför är A värt 10, B värt 11, C värt 12, D värt 13, E värt 14 och F värt 15.
Hur många olika tal kan skrivas med 8 bitar?
256, från 0 till 255. Generellt kan man med n bitar representera 2 upphöjt till n värden.
Omvandlar verktyget negativa tal eller tal med decimaler?
Nej, bara icke-negativa heltal. För text används UTF-8, så bokstäver med accent eller ring och emojis ger mer än 8 bitar.