✖

Omvandling mellan talsystem

Så skriver du om tal från det decimala talsystemet till andra talsystem, och tvärtom från andra talsystem till det decimala.

Vad är ett talsystem?

Vanligtvis räknar vi i det decimala talsystemet. Det har tio siffror: 0, 1, 2, 3, 4, 5, 6, 7, 8 och 9. Det som kännetecknar det decimala systemet är att när vi multiplicerar ett tal, till exempel 57, med tio flyttas vi en position åt vänster – vi behöver en siffra till för att skriva talet: 570.

Vi kan också ha andra talsystem. Det oktala talsystemet har bara siffrorna 0, …, 7. Uttrycket 7 + 1 skulle då vara lika med 10, eftersom vi inte har någon siffra 8 i det oktala systemet. Det hexadecimala talsystemet skulle ha siffrorna 0, 1, … 14, 15. För de siffror som är större än 9 använder vi ibland bokstäver, så det hexadecimala systemet har siffrorna 0, …9, A, B, C, D, E, F.

Överraskande nog möter vi andra talsystem även i vardagen. Ta till exempel tid – sekunder och minuter räknar vi i ett sexagesimalt system, det vill säga med bas 60. Varje tidpunkt på dagen kan skrivas som ett tal med tre siffror i det systemet. Den första siffran anger timmar, den andra minuter och den tredje sekunder. Om vi väljer kolon som skiljetecken får vi till exempel talet 14:05:59. Lägg märke till att när vi lägger till en sekund till den här tiden får vi inte 14:05:60 utan 14:06:00, eftersom 60 inte är en giltig siffra i det sexagesimala systemet.

Från decimalt till binärt

Säg att vi har talet 70 på ett papper. Nu vill vi skriva om det i det binära talsystemet, tvåsystemet. Principen är ganska enkel: vi dividerar talet vi vill skriva om med två om och om igen tills vi kommer till noll, och skriver upp resten vid varje heltalsdivision. Om vi vill byta till ett annat talsystem, till exempel det hexadecimala, dividerar vi med 16. Om vi vill byta till bas 6 dividerar vi med 6. I praktiken ser det ut så här:

70:2=35⟶0(rest)35:2=17⟶117:2=8⟶18:2=4⟶04:2=2⟶02:2=1⟶01:2=0⟶1

Det nya talet i det binära systemet består av resterna. Men vi läser inte resterna uppifrån utan nerifrån. Talet 70 skrivs alltså 1000110 i det binära systemet.

Från binärt till decimalt

Åt andra hållet gör vi så här. Säg att vi har talet 1100010 och vill skriva om det decimalt. Den här riktningen är enklare, det räcker att beräkna följande summa:

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

Varje term har formen x · 2i, där x är en siffra i det ursprungliga binära talet och i växer med ett i taget från höger. Eftersom vi skriver om talet 1100010 ser summan alltså ut så här:

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

Talet 1100010 har sju siffror, så exponenterna till tvåan blir 6, 5, …, 1, 0. När vi beräknar potenserna och multiplicerar får vi uttrycket:

11000102=64+32+2=98.

Varför fungerar metoden?

Vi kan visa det på det decimala systemet. Vad betyder siffrorna i ett tal egentligen, till exempel i talet 7384? Siffran 4 anger antalet ental, siffran 8 antalet tiotal, siffran 3 antalet hundratal och siffran 7 antalet tusental. Vi kan alltså skriva att

7384=7⋅1000+3⋅100+8⋅10+4⋅1

Det här uttrycket kan vi skriva om så att vi inte använder talen 100, 10 och 1 utan i stället alltid har någon potens av tio. Eftersom 100 = 1 och 101 = 10 och så vidare kan vi skriva

7384=7⋅103+3⋅102+8⋅101+4⋅100

Varje tal i det decimala systemet kan vi beskriva på samma sätt. Termerna har formen x · 10i, där x är en siffra från 0 till 9, alltså tio olika siffror. Värdet i är ett icke-negativt heltal som anger positionen. Om i = 0 anger termen ental, och om i = 2 anger den hundratal (eftersom 102 = 100).

Låt oss nu skriva om talet 7348 från det decimala systemet till, tja …, det decimala systemet. Det har faktiskt en poäng. Vi dividerar talet 7348 med 10:

7348:10=734⟶8(rest)734:10=73⟶473:10=7⟶37:10=0⟶7

Om vi läser resterna nerifrån får vi talet 7348 – precis det tal vi ville skriva om till … samma talsystem.

Om vi vill beskriva det binära systemet gör vi precis likadant – alla termer har formen x · 2i, där x är siffran 0 eller 1. Värdet i anger återigen positionen. På samma sätt som upprepad division med tio ger oss siffrorna på de olika positionerna i ett decimalt tal ger upprepad division med två oss siffrorna på positionerna i ett binärt tal.

Lägg också märke till att när vi dividerar ett tal med tio och tittar på resten ligger den alltid i intervallet [0, 9]. Om vi dividerar med två kan resten bara vara 0 eller 1.

Byte till andra talsystem

Metoden ovan för att gå från decimalt till binärt är så allmän att den fungerar även för andra talsystem. Om vi vill skriva om talet 185 hexadecimalt dividerar vi bara med 16:

185:16=11⟶9(rest)11:16=0⟶11

Talet 185 skulle i bas 16 få formen (11, 9). I stället för ”siffror” över 9 används vanligtvis bokstäver, så 10 = A, 11 = B, 12 = C, … Vi kan alltså skriva att talet 185 har formen B9 i bas 16.

På samma sätt kan vi skriva om talet B9 från bas 16 till decimalt.

B916=11⋅161+9⋅160=11⋅16+9=185