Lite kort om binär och hexadecimal talrepresentation.
Vårt talsystem kallas för det decimala talsystemet för att det har tio siffror 0-9, större tal än nio har minst
två siffror.Ett binärt tal består endast av ettor och nollor. Ett till tio blir binärt 1, 10, 11 100, 101, 110, 111,
1000, 1001, 1010. En binär siffra (etta eller nolla) kallas för en bit, åtta bitar kallas en byte och Två byte
(sexton bitar) kallas för ett word. Det högsta tal man kan åstadkomma med åtta bitar är ju om alla bitarna
är ettor 11111111. Hur mycket är det i vårt talsystem? För att räkna om från binärt till decimalt börjar man
från höger och multiplicerar siffran med 2 upphöjt till siffrans plats från höger. Första siffran har plats 0.
Tvåan kallas basen och är antalet siffror som talsystemet har.
Binärt tal:
1 1 1 1 1 1 1 1
* + * + * + * + * + * + * + *
2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
= 1*128 + 1*64 + 1*32 + 1*16 + 1*8 + 1*4 + 1*2 + 1*1
= 255 decimalt.
En byte kan alltså anta värden mellan 0 till 255 vilket blir 256 olika kombinationer. En byte var alltså åtta
bitar och 2^8 är just 256. Ett word (16 bitar) borde då kunna bli max 2^16 minus ett (räkna bort nollan)
vilket blir 65535. Räkna efter själv och se om det stämmer. När man programmerar i assembler använder
man oftast bytes och words men det blir lite oöverskådligt att bara använda massa ettor och nollor, därför
brukar man skriva talen i det hexadecimala talsystemet. Hexadecmala tal (hex-tal) har basen 16. Hur går
det då? det finns ju bara tio siffror! Jo man får ta hjälp av bokstäver också. Basen sexton innebär ensiffriga
tal från noll till femton, dessa är: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Att räkna om från Hexadecimalt
till decimalt sker likadant som från binärt till decimalt:
Hex-tal: 7 B
* + *
16^1 16^0
= 7*16 + 11*1 = 123 (B är ju hex för 11).
Jämför skillnaden mellan den decimala, hexadecimala och binära talrepresentationen för samma tal:
Decimalt: 123
Hexadecimalt: 7B
Binärt: 01111011
Anledningen till att man använder just det hexadecimala talsystemet är att det finns en enkel metod att
omvandla från hexadecimalt till binärt och vice versa. Det är nämligen bara att omvandla siffra för siffra.
Om vi vill omvandla Talet 7B Hex till binärt tar man först 7 hex = 0111 binärt sen tar man B hex vilket ju är
11 decimalt vilket är 1011 binärt. sen lägger man siffrorna efter varandra 0111 1011 vilket ju som vi
tidigare sett är just 7B Hex. Det är alltid så att en hexadecimal siffra motsvarar fyra binära siffror (bitar). En
byte kunde ju max vara 11111111 binärt vilket blir 1111 1111 = 15 15 = F F. FF alltså, vilket ju också är
det maximala talet man kan skriva med två Hex siffror. På samma sätt blir ett word (16 bitar) alltid fyra Hex
siffror. Det största talet man kan skriva med fyra hex-siffror är ju talet FFFF vilket blir 15*16^0 + 15*16^1 +
15*16^2 + 15*16^3 = 65535 som vi tidigare antog vara det största talet ett word kunde vara vilket visat sig
stämma.
Metoden att omvandla siffra för siffra fungerar alltså inte på "våra" decimala tal utan endast mellan hex och
binär tal. Om du vill veta mer om binära och hexadecimala tal gå till biblioteket, leta på nätet eller fråga en
kompis.
Faktaruta 1
*********************************************************
* Byte = 8 bitar *
* 0 - 255 decimalt *
* 00000000 - 11111111 binärt *
* 00 - FF Hex *
* *
* word = 16 bitar *
* 0 - 65535 decimalt *
* 0000000000000000 - 1111111111111111 binärt *
* 0000 - FFFF Hex *
*********************************************************
950519 Albert "Hexbert" Veli
e-mail: dat94avi@bilbo.mdh.se