Omvandla mellan hex, decimalt, oktalt och binärt

I vardagen används nästan uteslutande det decimala talsystemet (basen 10) där talen skrivs med hjälp av de tio siffrorna 0-9. I många tekniska datorsammanhang kan det ibland vara praktiskt att arbeta med andra talsystem. Det vanligaste är att man använder det binära, oktala eller hexadecimala talsystemet.

Binärt

Det binära talsystemet (basen 2) använder endast de två siffrorna, 0 och 1. En binär siffra brukar i datorsammanhang kallas för bit och kommer av engelskans binary digit. En bit är den enklaste formen av information som går att tänka sig eftersom det bara finns två lägen, 1 eller 0, eller av. I datorer grupperas flera bitar ihop till en byte, och ibland större enheter, för att på så sätt bilda större tal.

Vid programmering av datorprogram används ofta det decimala talsystemet för att ange numeriska värden, men i situationer där bitarnas värde är mer intressant än talet som de bildar tillsammans kan det vara mer praktiskt att använda det binära talsystemet. I många programmeringsspråk görs detta genom att använda prefixet 0b. Man kan t.ex. skriva 0b1101 istället för 13.

Att skriva binärt går ofta bra för väldigt små tal där antalet bitar är litet, men för lite större tal blir det snabbt svårläst, speciellt eftersom man av tekniska orsaker oftast inte kan ha något mellanrum mellan bitarna. Det är därför mycket vanligare att det hexadecimala eller oktala talsystemet används istället.

Oktalt

Det oktala talsystemet (basen 8) använder de åtta siffrorna 0-7. Anledningen till att man ibland använder sig av det oktala talsystemet är att varje oktal siffra motsvarar exakt tre binära siffror. Detta har att göra med att antalet tal som kan skrivas med 3 bitar ( 2^3 ) är lika många som antalet oktala siffror ( 8 ). Fördelen med detta är att om en bit ändras så påverkar det bara en av de oktala siffrorna.

Binärt Oktalt Decimalt
111101100 754 492
111111100 774 508

I exemplet ovan kan du se hur de blåmarkerade siffrorna för de olika talsystemen ändras när en av bitarna ändras. Lägg märke till att det decimala talet förändras helt och hållet. Med lite träning kan man lära sig att översätta mellan oktalt och binärt i huvudet, men att göra samma sak med decimala tal är mycket svårare eftersom varje siffra inte kan hanteras var för sig.

I många programmeringsspråk används prefixet 0 (noll) för att skriva oktala tal. Detta kan ibland vara problematiskt eftersom tal i matematiska sammanhang får inledas med extra nollor utan att det påverkar. Det händer därför ibland att personer, som inte vet att 0 är ett prefix, försöker skriva decimala tal med inledande nollor. I bästa fall innehåller talet siffrorna 8 eller 9 vilket ger ett felmeddelande, men i värsta fall kan det leda det till en bugg som gör att programmet inte fungerar som det är tänkt.

Hexadecimalt

Det hexadecimala talsystemet (basen 16) använder 0-9 för de tio första siffrorna, och A-F för att skriva resterande sex siffror. Vid programmering används vanligtvis prefixet 0x för att skriva hexadecimala tal.

Att använda det hexadecimala talsystemet har samma fördelar som det oktala men varje siffra motsvarar 4 i stället för 3 bitar. Eftersom en byte består av 8 bitar kan två hexadecimala siffror användas för beskriva värdet av en byte. Detta är i många fall en stor fördel eftersom det gör det lättare att läsa ut värdet av en enskild byte, vilket är en viktig anledning till varför det hexadecimala talsystemet används mycket oftare än det oktala.