Számrendszerek

A számrendszerek közül a kettes és a tizenhatos számrendszer bír kiemelkedő fontossággal a computerek világában. A mai számítógépek a Neumann-elveknek megfelelően bináris kódolást használnak. Ezt a legkönnyebb megvalósítani elektronikai szempontból. A hexadecimális számrendszer könnyen átalakítható kettessé és viszont, és ebben felírva a számok sokkal rövidebbek.

Kettes (bináris) számrendszer

Ebben a számrendszerben a helyiértékek a kettes szám hatványai, a számjegyek így 0 és 1 lehetnek.
 
1
0
1
1
0
1
0
0 
­ 
­ 
­ 
­ 
­ 
­ 
­ 
­ 
27
26
25
24
23
22
21
20
Egy bináris helyiérték egy bit információ tárolására, egy nyolc helyiértékes bináris szám 1 byte információ tárolására alkalmas. Az egyes helyiértékek elnevezése jobbról balra így: 0.bit, 1.bit, 2.bit, stb...

 

 

Átváltások

Példaként váltsuk át a fenti bináris számot tizes számrendszerbe!

10110100 =0*20+0*21+1*22+0*23+1*24+1*25+0*26+1*27=180

Nem kell mást tenni, mint a helyiértéknek megfelelő 2-es hatványt összeszorozni az ott talált számmal. Egyszerűbben felírva:

10110100 =128+32+16+4=180

Most nézzük az átváltást tizes-ől kettes számrendszerbe! A módszer nagyon egyszerű, a számot kettővel kell osztani, a maradékot oldalra írni, a hányadossal tovább folytatni az osztást egészen addig. amíg a hányados 0 nem lesz. Nézzük a példát!
 
 
 
180
0 180 osztva kettővel 90, maradék 0
 
90
0 90 osztva kettővel 45, maradék 0
 
45
1 45 osztva kettővel 22, maradék 1
 
22
0 22 osztva kettővel 11, maradék 0
 
11
1 11 osztva kettővel 5, maradék 1
 
5
1 5 osztva kettővel 2, maradék 1
 
2
0 2 osztva kettővel 1, maradék 0
 
1
1 1 osztva kettővel 0, maradék 1
 
0
   
A maradékokat kell leírni alulról fölfelé: 180=10110100

Törtszámok ábrázolása

A "kettedes" törtek ábrázolása tulajdonképpen következik az eddigiekből. A "kettedes" vessző utáni helyiértékek 2 negatív hatványai.
 
0,
0
1
1
0
1
0
1 
 
­ 
­ 
­ 
­ 
­ 
­ 
­ 
 
2-1
2-2
2-3
2-4
2-5
2-6
2-7
Nézzük az átváltást:

0,0110101 =0*2-1+1*2-2+1*2-3+0*2-4+1*2-5+0*2-6+1*2-7=0,4140625

Egyszerűbben felírva:

0,0110101 =0,25+0,125+0,03125+0,0078125=0,4140625

Tizedes tört átváltásakor az egész részt a fentebb tanultak szerint kell átváltani binárisba. A törtrész különválasztva a következő szabály szerint váltjuk át: A számot szorozzuk kettővel, az egész részét írjuk ki, a törtrészével folytassuk a műveletet addig, amíg a törtrész nulla nem lesz, vagy meg nem unjuk a dolgot. (Azaz el nem értük a kellő számú "kettedes"-jegyet.) Nézzük a példát!


 
 
 
0,4140625
   
 
0,828125
0 0,4140625 szorozva kettővel 0,828125, egészrésze 0
 
1,65625
1 0,828125 szorozva kettővel 1,65625, egészrésze 1
 
1,3125
1 0,65625 szorozva kettővel 1,3125, egészrésze 1
 
0,625
0 0,3125 szorozva kettővel 0,625, egészrésze 0
 
1,25
1 0,625 szorozva kettővel 1,25, egészrésze 1
 
0,5
0 0,25 szorozva kettővel 0,5, egészrésze 0
 
1
1 0,5 szorozva kettővel 1, egészrésze 1
 
0
   
Az egész részeket felülről lefelé haladva kell a "kettedes" vessző után írni:

0,4140625=0,0110101

Összeadás

A kettes számrendszerben az összeadáshoz csak néhány műveleti szabályt kell ismerni, sokkal kevesebbet, mint bármely számrendszerben.

Ezen szabályok alkalmazására nézzünk egy példát:
 
 
    1 0 0 1 1 0 
    1 0 0 1 1 1 
  1 0 0 1 1 0 1 
Szokás szerint balról jobbra haladva? A 0. biten 0 +1 =1 , nincs átvitel, mert az eredmény egyjegyű. Az első biten 1 +1 =10 átvitel 1 a következő bitre. A második biten 1 +1 +1 =11 a harmadik egyes az előző bitról lett áthozva, az átvitel 1. A harmadik biten 0 +0 +1 =1, nincs átvitel. A negyedik biten 0 +0 =0 , nincs átvitel. Az ötödik biten 1 +1 =10 , ahol mind a két számjegyet le kell írni, mivel elfogytak az összeadandók.

Szorzás

A többjegyű számok szorzását gyakorlatilag ugyanúgy kell elvégezni, mint a tizes számrendszerben, azonban mivel csak 0 és 1 létezik vagy nulla az eredmény vagy az eredeti számot kell leírni. Nézzük a példát!
 
 
     
1
0
1 
1
1
0 
     
0
0
0
       
   
1
0
1
         
 
1
0
1
           
 
1
1
1
1
0 
       
A részsorok összeadásához a már megismert módszert kell követni!

Negatív számok ábrázolása

A számítógép előjeles számok ábrázolására az un. kettes komplemens képzést használja. Az előjel a legelső biten jelenik meg, ez "elveszik " a számábrázolás számára. 0 a pozitív, 1 a negatív előjel bit. Legegyszerűbb lenne, ha a pozitív megfelelőben az előjelet kicserélve képeznénk a negatív számot. Ez a módszer azonban nem jó. Helyette használatos a fentebb említett kettes komplemens. A kettes komplemens működéséhez nézzük meg "ugyanezt" tizesben először. Tegyük fel hogy csak egy számjegyet használunk.
 
 
 
8
     
8
       
 
-3
     
7
       
 
5
   
1
5
       
Majdnem ugyanaz az eredmény a második esetben is, de nem kell tudni kivonni hozzá. Persze kérdés, hogy a 15-ben az egyessel mi lesz. Azt mondjuk túlcsordult. Az ötlet tehát az, hogy a negatív számhoz adjuk hozzá a legnagyobb ábrázolható számot (9) és még egyet (9+1=10). Ez a szám a jótékony túlcsordulás miatt pont úgy viselkedik, mint a negatív szám. Sajnos a kettes komplemensben adódnak még némi problémák, de az elv ugyanaz. Nézzük hogyan kell kettes komplemensben ábrázolni a számokat!

Példáinkban nyolc bitet használunk, azaz az első bit az előjel és 7 bit marad a számábrázolásra. Ilyen módon a legnagyobb pozitív szám 127, a nullánál nagyobb számoknál csak annyi a feladat, hogy eléírjuk a 0 előjel bitet.

Pl.: 115=01110011

A negatív számok felírása kicsit bonyolultabb. Három módszert is mutatunk. Próbáljuk ki őket a -115-el.

I. módszer:(Ez nem más, mint amit a tizes számrendszerben csináltunk.)

A legnagyobb ábrázolható pozitív szám a 127, ezt plusz 1-et adjuk hozzá -115-höz. Az eredmény 13. Ez binárisban: 0001101, eléírva az 1-es előjel bitet.

-115=10001101

 

II. módszer:
  1. Először írjuk fel a szám abszolút értékét binárisban!.
     

    01110011

  2. Váltsuk át az összes bitet ellenkezőjére, azaz az egyeseket nullára, a nullákat egyesre'
     

    10001100

  3. Adjunk hozzá egyet a számhoz!
10001101III. módszer:
  1. Először írjuk fel a szám abszolút értékét binárisban!.
     

    01110011

  2. Jobbról indulva az első 1-ig (az 1 is) hagyjuk változatlanul, a többit pedig váltsuk ellenkezőjére.!
10001101Mindhárom módszer ugyanazt az eredményt adja. Próbáljuk ki, hogy ez a szám valóban úgy viselkedik, mintha negatív lenne. (Például adjuk hozzá a 115-höz. Az eredmény valóban nulla lesz.)

Ha látunk egy kettes komplemens számot hogyan alakíthatjuk át tizes számrendszerbe? Ha az előjel bitje nulla, tehát a szám pozitív a már ismert módszert alkalmazhatjuk a maradék hét bitre. Ha azonban az előjel bit 1, vagyis a szám negatív az átváltás nem ennyire egyszerű. Tulajdonképpen a fenti három módszer visszafelé eljátszásával próbálkozhatunk. (A harmadik módszert nem lehet megfordítani, a második és az első megfordítása tulajdonképpen ugyanaz. Ezt fogjuk ismertetni.)

  1. Válasszuk le az előjel bitet és vonjunk ki a számból egyet.
  2. Vonjuk ki a kapott számot 127-ből, így megkapjuk a negatív számunk abszolút értékét.
 

Tizenhatos számrendszer

A számítógép kettes számrendszerben számol, azonban azt észrevehettük, hogy így leírni a számokat csak igen sok számjegy segítségével lehet. A rövidebb felírás kedvéért egy nagyobb alapú számrendszerre volt szükség. Láttuk azonban, hogy a kettesből tizesbe való átváltás nem túl gyors. Ezek az érvek (rövidség, gyors átváltás) a hexadecimális számrendszer mellett szólnak.

Ebben a felírásban 16 féle számjegyre lesz szükségünk.: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Az utóbbi 6 rendre A=10, B=11, C=12, D=13, E=14, F=15. A helyiértékek pedig:
 
A
B
8
FH
­ 
­ 
­ 
­ 
162
162
161
160
(4096)
(256)
(16)
(1)
 

Átváltások

Tizenhatosból tizesbe hasonlóan kell, mint a kettesből tizesbe. A megfelelő helyiértéket meg kell szorozni az ott talált számjegy értékével. Példaként váltsuk át a fenti számot:

AB8FH=10*4096+11*256+8*16+15*1=40960+2816+128+15=43919

Tizesből tizenhatosba is hasonlóan fogunk eljárni, mint a binárisban, de itt nem kettővel kell osztani, hanem tizenhattal. Nézzük a példát!
 
 
 
43919
15 43919 osztva tizenhattal 2744, maradék 15 (F)
 
2744
8 2744 osztva tizenhattal 171, maradék 8
 
171
11 171 osztva tizenhattal 10, maradék 11 (B)
 
10
10 10 osztva tizenhattal 0, maradék 10 (A)
 
0
   
A maradékokat itt is alulról felfelé kell leírni:

43919=AB8FH

Ennek a résznek az elején említettek miatt fontos lesz a kettesből tizenhatosba és visszafelé. Ez azért egyszerű, mert egy hexadecimális számjegy pontosan négy bináris számjegynek felel meg. Átváltáskor tehát csak arra kell vigyázni hogy akkor is négy bináris számjegyet írjunk le ha kevesebbel is le tudnánk az adott számot. Nézzünk példát tizenhatosból kettesbe!
 
 
A
B
8
FH
1010 
1011 
1000 
1111 
Összeolvasva:

AB8FH=1010101110001111

Kettesből tizenhatosba: Osszuk fel a kettes számrendszerbeli szám számjegyeit hátulról kezdve négyes csoportokba (az nem baj ha utoljára kevesebb marad), majd ezeket a négyes csoportokat váltsuk át tizenhatosba, végül a kapott számjegyeket írjuk egymás mellé!

1010101110001111 =1010 1011 1000 1111 =A B 8 FH