Nu när du känner till de olika talsystemen är nästa steg att kunna konvertera mellan dem.
Anledningen är enkel: vi människor använder decimal (bas 10) i vardagen, medan datorer arbetar med binärt (bas 2) eftersom elektroniken bygger på två tillstånd (på/av, 1/0).
All information i en dator – text, ljud, bilder och programkod – lagras och bearbetas därför som ettor och nollor. För oss människor blir dock långa binära tal svåra att läsa och överskåda. Av den orsaken används ofta hexadecimalt (bas 16) som ett mer kompakt och lättläst sätt att representera binära värden.
Översikt över talsystemen
Bra att tänka på:
- Decimal (bas 10): Använder siffrorna 0–9. Varje position är en potens av 10.
- Binär (bas 2): Använder siffrorna 0 och 1. Varje position är en potens av 2.
- Hexadecimal (bas 16): Använder siffrorna 0–9 och bokstäverna A–F. Varje position är en potens av 16.
- Viktig regel: 1 hex-siffra = 4 binära bitar.
Metoder för omvandlingar – Decimala till binära
För att omvandla ett decimalt tal till binärt kan man använda metoden upprepad division med 2
- Dividera talet med 2.
- Notera resten (0 eller 1).
- Fortsätt dividera kvoten med 2 tills kvoten blir 0.
- Läs av resten baklänges – det ger det binära talet
Exempel: 22₁₀ till N₂
- 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
- Baklänges: 10110₂
Metoder för omvandlingar – Binärt till decimalt
För att omvandla ett binärt tal till decimalt kan man använda metoden summa av potenser av 2
- Skriv potenser av 2 ovanför bitarna.
- Addera alla där det står en etta.
Exempel: 10110₂ till decimalt (N₁₀)
| 128 (27) |
64 (26) |
32 (25) |
16 (24) |
8 (23) |
4 (22) |
2 (21) |
1 (20) |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 | |||
| 1 x 16 | 1 x 4 | 1 x 2 |
1 ⋅ 24 + 1 ⋅ 22 + 1 ⋅ 21 = 16 + 4 + 2 = 22
Metoder för omvandlingar – Binärt till hexadecimalt
För att omvandla ett binärt tal till hexadecimalt kan man använda metoden gruppera i fyror
- Komplettera bitar med 0 så att alla gånger har man grupper av 4 bitar
- Gruppera binära talet i grupper om 4 bitar (från höger).
- Översätt varje grupp till en hex-siffra.
Exempel: Omvandla 10110₂ till N₁₆
- 00010110
- 0001 0110
- 1 6
Resultat: 0x16
Metoder för omvandlingar – Decimalt till hexadecimalt
För att omvandla ett decimalt tal till hexadecimalt kan man använda två metoder: via binär och upprepad division med 16.
Metod 1: Via binär
- Omvandla Decimal till Binär.
- Dela binära talet i 4-bitars grupper.
- Omvandla grupperna till Hex.
Metod 2: Upprepad division med 16
- Dela talet med 16 och skriv ner kvoten och resten.
- Resterna motsvarar de hexadecimala siffrorna (0–9 och A–F).
- Fortsätt dela kvoten med 16 tills kvoten blir mindre än 16.
Exempel 1: Omvandla 350₁₀ till N₁₆ via metod 1
| 512 (29) |
256 (28) |
128 (27) |
64 (26) |
32 (25) |
16 (24) |
8 (23) |
4 (22) |
2 (21) |
1 (20) |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | |
- 000101011110
- 0001 0101 1110
- 1 5 E
Resultat: 0x15E
Exempel 1: Omvandla 350₁₀ till N₁₆ via metod 2: dela med 16
- 350 ÷ 16 = 21,875 ( 16 x 21 = 336, rest 14 vilket hexadecimalt motsvarar E)
- 21 ÷ 16 =1,3125 (16 x 1 = 16, resten 5 vilket hexadecimalt motsvarar 5)
- 1 ÷ 16 = 0,0625 (16 x 0 = 0, resten 1 vilket motsvara hexadecimalt 1)
Resultat: 0x15E
Exempel 2: Omvandla 45₁₀ till Binär och till hexadecimal.
- Decimal till Binär: 45 ÷ 2 till 101101₂
- Binär till Hex: 101101 = 0010 1101 = 0x2D
Exempel 3: Omvandla 0x3F till decimal.
- Hex till Binär: 3 = 0011, F = 1111 till 00111111₂
- Binär till Decimal: 32+16+8+4+2+1 = 63₁₀
Tabellmetod
- Skriv upp en rad med vikterna (potenser av 2): 128 64 32 16 8 4 2 1
- Ta det decimala talet och jämför med största vikten (128).
- Om talet ≥ vikten till skriv 1 i den kolumnen och subtrahera vikten från talet.
- Om talet < vikten till skriv 0. Gå vidare till nästa kolumn (64, 32, …) och upprepa. Fortsätt tills talet blivit 0. Resultatet är binärt representation.
| 128 (27) |
64 (26) |
32 (25) |
16 (24) |
8 (23) |
4 (22) |
2 (21) |
1 (20) |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
Resultat: 15610 = 100111002
| 128 (27) |
64 (26) |
32 (25) |
16 (24) |
8 (23) |
4 (22) |
2 (21) |
1 (20) |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
| 156−128=28 | 28<64 | 28<32 | 28−16=12 | 12−8=4 | 4−4=0 | 0<2 | 0<1 |
Resultat: 15610 = 100111002