En av de största nackdelarna med binära tal är att den binära strängen som motsvarar ett stort decimaltal i bas-10 kan bli ganska lång.
När man arbetar med stora digitala system, t.ex. datorer, är det vanligt att binära tal består av 8, 16 och till och med 32 siffror, vilket gör det svårt att både läsa och skriva utan att producera fel, särskilt när man arbetar med många binära tal med 16 eller 32 bitar.
Ett vanligt sätt att övervinna detta problem är att ordna de binära talen i grupper eller uppsättningar av fyra bitar (4-bitar). Dessa grupper av 4-bitar använder en annan typ av numreringssystem som också är vanligt förekommande i dator- och digitala system och som kallas hexadecimala tal.
Hexadecimala talsträngar
Det ”hexadecimala” eller helt enkelt ”Hex”-nummersystemet använder sig av basen 16-systemet och är ett populärt val för att representera långa binära värden, eftersom deras format är ganska kompakt och mycket lättare att förstå jämfört med långa binära strängar av 1:or och 0:or.
Som ett Base-16-system använder det hexadecimala numreringssystemet därför 16 (sexton) olika siffror med en kombination av siffror från 0 till och med 15. Med andra ord finns det 16 möjliga siffersymboler.
Det finns dock ett potentiellt problem med att använda denna metod för siffernotering som orsakas av det faktum att decimalsiffrorna 10, 11, 12, 13, 14 och 15 normalt skrivs med två intilliggande symboler. Om vi till exempel skriver 10 i hexadecimaltal, menar vi då det decimala talet tio eller det binära talet två (1 + 0). För att komma runt detta knepiga problem kan man använda hexadecimala tal som anger värdena tio, elva, . . . , femton ersätts med storbokstäverna A, B, C, D, E respektive F.
Sedan i det hexadecimala talsystemet använder vi siffrorna 0-9 och storbokstäverna A-F för att representera dess binära eller decimala motsvarighet, med början med den minst signifikanta siffran på höger sida.
Som vi just har sagt kan binära strängar vara ganska långa och svåra att läsa, men vi kan göra livet enklare genom att dela upp dessa stora binära tal i jämna grupper för att göra dem mycket lättare att skriva ner och förstå. Till exempel är följande grupp av binära siffror 1101 0101 1100 11112 mycket lättare att läsa och förstå än 110101010101110011112 när de alla är uppdelade tillsammans.
I den vardagliga användningen av det decimala talsystemet använder vi grupper av tre siffror eller 000:or från höger sida för att göra ett mycket stort tal, t.ex. en miljon eller en triljon, lättare för oss att förstå, och detsamma gäller även i digitala system.
Hexadecimala tal är ett mer komplext system än att bara använda binära eller decimala tal och används främst när det handlar om datorer och minnesadressplatser. Genom att dela upp ett binärt tal i grupper av 4 bitar kan varje grupp eller uppsättning av 4 siffror nu ha ett möjligt värde mellan ”0000” (0) och ”1111” ( 8+4+2+1 = 15 ), vilket ger totalt 16 olika sifferkombinationer från 0 till 15. Glöm inte att ”0” också är en giltig siffra.
Vi minns från vår första handledning om binära tal att en 4-bitars grupp av siffror kallas för en ”nibble” och eftersom 4-bitar också krävs för att producera ett hexadecimalt tal kan en hexadisk siffra också betraktas som en nibble, eller en halv byte. Då krävs två hexadecimala siffror för att producera en hel byte som sträcker sig från 00 till FF.
Då 16 i decimalsystemet är den fjärde potensen av 2 ( eller 24 ) finns det dessutom ett direkt samband mellan siffrorna 2 och 16 så en hexadekimal siffra har ett värde som är lika stort som fyra binära siffror, så nu är q lika stort som ”16”.
På grund av detta samband kan fyra siffror i ett binärt tal representeras med en enda hexadekimal siffra. Detta gör konverteringen mellan binära och hexadecimala tal mycket enkel, och hexadecimaltal kan användas för att skriva stora binära tal med mycket färre siffror.
Talen 0 till 9 används fortfarande som i det ursprungliga decimalsystemet, men siffrorna 10 till 15 representeras nu av stora bokstäver i alfabetet från A till och med F. Förhållandet mellan decimaltal, binärtal och hexadecimaltal anges nedan.
Hexadecimaltal
Decimaltal | 4-bit Binary Number | Hexadecimal Number |
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 111111 | F |
16 | 0001 0000 | 10 (1+0) |
17 | 0001 0001 | 11 (1+1) |
Fortsätter uppåt i grupper om fyra |
Med hjälp av det ursprungliga binära talet ovan 1101 0101 1100 11112 kan detta nu omvandlas till ett motsvarande hexadecimalt tal D5CF som är mycket lättare att läsa och förstå än en lång rad med 1:or och 0:or som vi hade tidigare.
Så genom att använda hexadecimal notation kan digitala tal skrivas med färre siffror och med mycket mindre sannolikhet för att ett fel uppstår. På samma sätt är konvertering av hexadecimala baserade tal tillbaka till binära helt enkelt den omvända operationen.
Det viktigaste kännetecknet för ett hexadecimalt siffersystem är alltså att det finns 16 distinkta räkningssiffror från 0 till F där varje siffra har en vikt eller ett värde på 16 med utgångspunkt från den minst signifikanta biten (LSB). För att skilja hexadecimala tal från denariska tal används ett prefix av antingen ett ”#”, (Hash) eller ett ”$” (dollartecken) före det egentliga hexadecimala talvärdet, #D5CF eller $D5CF.
Då basen i ett hexadecimalt system är 16, vilket också representerar antalet enskilda symboler som används i systemet, används subscriptet 16 för att identifiera ett tal uttryckt i hexadecimalt. Det föregående hexadecimala talet uttrycks till exempel som: D5CF16
Räkna med hexadecimala tal
Så vi vet nu hur man omvandlar 4 binära siffror till ett hexadecimalt tal. Men om vi hade fler än 4 binära siffror, hur skulle vi då kunna räkna i hexadecimaltal bortom den sista bokstaven F. Det enkla svaret är att börja om från början med en annan uppsättning av 4 bitar på följande sätt.
0…till…9, A,B,C,D,E,F, 10…till…19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21….etc
Förvirra dig inte, 10 eller 20 är INTE tio eller tjugo det är 1 + 0 och 2 + 0 i hexadecimalt. Faktum är att tjugo inte ens existerar i hexadekvat. Med två hexadecimala tal kan vi räkna upp till FF som är lika med decimaltalet 255. För att räkna högre än FF skulle vi på samma sätt lägga till en tredje hexadecimal siffra till vänster så att det första 3-bitars hexadecimala talet skulle vara 10016, (25610) och det sista skulle vara FFF16, (409510). Det högsta fyrsiffriga hexadecimala talet är FFFF16, vilket är lika med 65 535 i decimal och så vidare.
Det hexadecimala talets representation
MSB | Hexadecimaltal | LSB | ||||||
168 | 167 | 166 | 165 | 164 | 163 | 162 | 161 | 160 |
4.3G | 2.6G | 16M | 1M | 65k | 4k | 256 | 16 | 1 |
Det här med att lägga till ytterligare hexadecimala siffror för att omvandla både decimala och binära tal till ett hexadecimalt tal är mycket enkelt om det finns 4, 8, 12 eller 16 binära siffror att konvertera. Men vi kan också lägga till nollor till vänster om den mest signifikanta biten, MSB, om antalet binära bitar inte är en multipel av fyra.
Till exempel är 110010110110110012 ett binärt tal med fjorton bitar som är för stort för endast tre hexadecimala siffror, men ändå för litet för ett hexadecimalt tal med fyra siffror. Svaret är att lägga till ytterligare nollor till den vänstra biten tills vi har en komplett uppsättning binära fyrbitarstal eller multiplar därav.
Att lägga till ytterligare nollor till ett binärt tal
Binärt tal | 0011 | 0010 | 1101 | 1001 | |
Hexadecimaltal | 3 | 2 | 2 | D | 9 |
Den största fördelen med ett hexadecimalt tal är att det är mycket kompakt och genom att använda en bas på 16 innebär det att antalet siffror som används för att representera ett givet tal vanligtvis är mindre än i binär eller decimal. Dessutom är det snabbt och enkelt att konvertera mellan hexadecimala tal och binära tal.
Hexadecimala tal Exempel No1
Konvertera följande binära tal 1110 10102 till dess motsvarighet i hexadecimala tal.
Binärt tal = 111010102 | |||
Gruppera bitarna i fyrtal med början från höger sida | |||
= | 1110 | 1010 | |
Hitta decimalekvivalenten av varje. enskilda grupp | |||
= | 14 | 10 | (i decimaltal) |
Konvertera till Hexadecimal med hjälp av tabellen ovan | |||
= | E | A | (Hex) |
Då, den hexadecimala motsvarigheten till det binära talet
1110 10102 är #EA16 |
Hexadecimala tal Exempel No2
Konvertera följande hexadecimala tal #3FA716 till dess binära motsvarighet och även till dess decimala motsvarighet med hjälp av subscripts för att identifiera varje talsystem.
#3FA716
= 0011 1111 1010 01112
= (8192 + 4096 + 2048 + 1024 + 512 + 512 + 256 + 128 + 32 + 4 + 2 + 1)
= 16,29510
Det decimala talet 16,295 kan då representeras som:-
#3FA716 hexadecimalt
eller
0011 1111 1010 01112 binärt.
Sammanfattning av hexadecimala tal
För att sammanfatta. Det hexadecimala eller hexadecimala talsystemet används vanligen i datorer och digitala system för att reducera stora strängar av binära tal till uppsättningar av fyra siffror så att vi lätt kan förstå dem. Ordet ”Hexadecimal” betyder sexton eftersom denna typ av digitalt nummersystem använder 16 olika siffror från 0 till 9 och A till F.
Hexadecimala tal grupperar binära tal till uppsättningar av fyra siffror. För att omvandla en binär sekvens till ett motsvarande hexadecimalt tal måste vi först gruppera de binära siffrorna till en uppsättning av 4-bitar. Dessa binära uppsättningar kan ha valfritt värde från 010 ( 00002 ) till 1510 ( 11112 ) som representerar den hexadecimala motsvarigheten till 0 till F.
I nästa handledning om binär logik kommer vi att titta på hur vi kan konvertera hela strängar av binära tal till ett annat digitalt numreringssystem som kallas oktaltal och vice versa.