4. Számrendszerek (a)

A helyi értékes számábrázolás

A számokat többféleképpen jelölték az emberek a történelem során. A ma legismertebb ábrázolásmód a helyiértékes számábrázolás. Egy másféle számábrázolásra jó példa az ismert római számok leírása. A helyiértékes számábrázolás esetén tudni kell az alapszámot. Az általunk használt számrendszer a 10-es, más néven decimális számrendszer, amelynek alapszáma 10. A következőkben tárgyszerűen és röviden olvasható az általunk használt számrendszerek jellemzése.

A bináris számrendszer

A bináris számrendszert kettes számrendszernek is nevezik.

A számrendszer alapszáma: 2.

A számrendszer számjegyei: 0; 1.

A számrendszer helyiérték táblázata:

8

4

2

1

1/2

1/4

23

22

21

20

2-1

2-2

A decimális számrendszer

A decimális számrendszert tízes számrendszernek is nevezik.

A számrendszer alapszáma: 10.

A számrendszer számjegyei: 0; 1; 2; 3; 4; 5; 6; 7; 8; 9.

A számrendszer helyiérték táblázata:

1000

100

10

1

1/10

1/100

103

102

101

100

10-1

10-2

A hexadecimális számrendszer

A hexadecimális számrendszert tizenhatos számrendszernek is nevezik.

A számrendszer alapszáma: 16.

A tizenhatos számrendszerben nem tudunk tizenhat különböző számot leírni, mivel csupán tíz számjegyet ismerünk. Ésszerű és egyértelmű megoldást ad, ha a 9 feletti számjegyeket betűkkel helyettesítjük:           A–10; B–11; C–12; D–13; E–14; F–15.

A számrendszer számjegyei: 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; A; B; C; D; E; F.

A számrendszer helyiérték táblázata:

4096

256

16

1

1/16

1/256

163

162

161

160

16-1

16-2

 


 

Konverziók a számrendszerek között

A konverzió azt jelenti, hogy az egyik számrendszerből hogyan lehet egy másik számrendszerbe átírni a kívánt számot.

A decimális számrendszer konverziói

Egy tízes számrendszerbeli egész számot a kettes számrendszerbe a következő algoritmussal konvertálhatunk (válthatunk) át: a decimális számot addig osztjuk kettővel, amíg a hányados nulla nem lesz. A maradékokat mindig feljegyezzük, majd a maradékot az utolsótól visszafelé olvasva, megkapjuk a bináris alakot.

Példa:

11710 = 11101012

 

 

 

maradék:

117

: 2 = 58

 

1

58

: 2 = 29

 

0

29

: 2 =4

 

1

14

: 2 = 7

 

0

7

: 2 = 3

 

1

3

: 2 = 1

 

1

1

: 2 = 0

 

1

Egy tízes számrendszerbeli egész számot a tizenhatos számrendszerbe a következő algoritmussal válthatunk át: a decimális számot addig osztjuk tizenhattal, amíg a hányados nulla nem lesz. A maradékokat mindig feljegyezzük, majd a maradékot az utolsótól visszafelé olvasva, megkapjuk a hexadecimális alakot. Természetesen a 9-nél nagyobb maradékokat a hexadecimális számrendszerben meghatározott jegyekre kell átírni.

Példa:

45910 = 1CB16

 

 

 

maradék:

459

: 16 = 28

 

11

28

: 16 = 1

 

12

1

: 16 = 0

 

1

 


 

A bináris számrendszer konverziói

Egy bináris számot átválthatunk decimálissá, ha a számjegyeket a helyiértékükkel összeszorozzuk, majd a szorzatokat összeadjuk.

Példa:

10100012 = 8110

64

32

16

8

4

2

1

 

1

0

1

0

0

0

1

 

ò

ò

ò

ò

ò

ò

ò

 

64x1+

32x0+

16x1+

8x0+

4x0+

2x0+

1x1

= 81

Egy bináris számot átválthatunk hexadecimálissá, ha a számjegyeket a legkisebb helyiértékkel kezdve négyesével csoportosítjuk, majd a négy számjegyet sorba váltjuk át hexadecimálissá.

 

 

 

bináris

hexadec.

decimális

1. példa: 1 0011 1111 01012 = 13F516

 

 

0000

0

0

 

 

 

 

 

0001

1

1

1

0011

1111

0101

 

0010

2

2

ò

ò

ò

ò

 

0011

3

3

1

3

F

5

 

0100

4

4

 

 

 

 

 

0101

5

5

 

 

 

 

 

0110

6

6

2. példa: 1110000110110002 = 70D816

 

 

0111

7

7

 

 

 

 

 

1000

8

8

111

0000

1101

1000

 

1001

9

9

ò

ò

ò

ò

 

1010

A

10

7

0

D

8

 

1011

B

11

 

 

 

 

 

1100

C

12

 

 

 

 

 

1101

D

13

 

 

 

 

 

1110

E

14

 

 

 

 

 

1111

F

15


 

A hexadecimális számrendszer konverziói

Egy hexadecimális számot átválthatunk decimálissá, ha a számjegyeket a helyiértékükkel összeszorozzuk, majd a szorzatokat összeadjuk.

Példa:

1A316 = 41910

256

16

1

 

1

A

3

 

ò

ò

ò

 

256x1+

16x10+

3x1

= 419

Egy hexadecimális számot átválthatunk binárissá, ha a számjegyeket a legkisebb helyiértékkel kezdve négy bináris számjeggyé alakítjuk.

 

 

 

 

 

bináris

hexadec.

decimális

1.példa : 13F616 = 11110011000101012

 

 

0000

0

0

 

 

 

 

 

0001

1

1

 

 

 

 

 

0010

2

2

F

3

1

6

 

0011

3

3

ò

ò

ò

ò

 

0100

4

4

1111

0011

0001

0101

 

0101

5

5

 

 

 

 

 

0110

6

6

 

 

 

 

 

0111

7

7

2.példa: 1A16 = 1110102

 

 

1000

8

8

 

 

 

 

 

1001

9

9

 

 

 

 

 

1010

A

10

 

3

A

 

 

1011

B

11

 

ò

ò

 

 

1100

C

12

 

11

1010

 

 

1101

D

13

 

 

 

 

 

1110

E

14

 

 

 

 

 

1111

F

15

 

4. Számábrázolások (b)

A számoknak létezik valódi és nem valódi ábrázolása. Az első a BCD (Binary Coded Decimais} kód alapján történő ábrázolás, a második a bináris fixpontos, illetve a bináris lebegőpontos ábrázolás.

A BCD-kódú ábrázolásnál a számot ugyan decimálisán ábrázoljuk, azonban bináris számjegyekkel, számjegyenként 4 biten, úgynevezett tetrádokban. Az egyes számjegyeknek a bináris értékét a már ismert szabályok szerint képezzük. E szerint egy négyjegyű decimális szám 4-szer 4 biten, azaz két bájton tárolható. A BCD ábrázolás általában előjel nélküli, ha mégis tárolni kell az előjelet (negatív számok esetén), akkor a számot balról egy bájttal kiegészítjük, aminek a bal szélső bitjén álló l-es jelzi, hogy a szám negatív, a bájt többi bitje nulla lesz

A valódi számábrázolásnál a számot kettes számrendszerben tároljuk, az egész számokat fixpontosán, a valós számokat pedig lebegőpontosán. A fixpontos ábrázolásnál a tizedesvessző helye rögzített, ezért azt nem tároljuk. Az egész számoknál ez a tizedesvessző a legkisebb helyi értéktől jobbra van. A lebegőpontos számoknál a tizedesvessző nem rögzített, helye változhat.

Az egész számok binárissá alakítása a már ismert módon történik. Természetesen nem csak pozitív, hanem negatív számokat is ábrázolnunk kell. Az előjel tárolására a bal szélső bit szolgál, ha ez 0 - a szám pozitív, ha l - a szám negatív. Nézzünk néhány példát!

+31 =  00011111

-31 =   10011111:

+9541 = 0010010101000101

-9541  = 1010010101000101

A számoknál a bal szélső, előjelbitet félkövér betűkkel szedtük. Látható, hogy a 9541 ábrázolása ily módon egészen más bináris számsort eredményezett, mint a BCD ábrázolásnál.

Az egész számoknál a kivonást összeadásra vezetjük vissza, ehhez használjuk a kettes komplemens kódot. A kód elkészítéséhez először elő kell állítani az egyes komplemenst, melyet úgy képezünk, hogy a számot átírjuk kettes számrendszerbe, majd bináris számjegyeit ellentétes értékűre cseréljük, azaz 0 helyett l-t, l helyett pedig 0-t írunk. Az így előállított egyes komplemens kódhoz binárisan egyet adunk, és az így keletkező eredmény lesz a kettes komplemens.

Az ábra felső részében mutatunk példát a kettes komplemens képzésére, az alsó részben pedig a +3 l-hez hozzáadjuk a kettes komplemensét. Az eredmény egy 9 bitből álló szám, de ha a számokat egy bájton ábrázoljuk, akkor az első bitet a rendszer levágja, tehát az összeadás eredménye nulla lesz. A kettes komplemens értéke tehát -31-nek felel meg, így a 31-31 műveletet összeadásra vezettük vissza. Binárisan ugyanúgy adjuk össze a számokat, mint decimálisán. Ha elérjük a számrendszer alapszámát, akkor nullát írunk, és egyet átviszünk a
következő nagyobb helyi értékre. Például l meg l egyenlő 10.

Az egész számokat különböző hosszban tároljuk, vannak előjel nélküli és előjeles egész számok. A szokásos tárolási hosszak az l, 2 és 4 bájt. A tárolási hossz megszabja a legnagyobb és legkisebb tárolható értéket. Ha N biten tárolunk egész számokat, akkor a legnagyobb előjel nélküli decimális egész a 2N-1.

Az egész számokkal elvégezhető az összeadás, kivonás, szorzás művelete. A számítástechnikai rendszerek az utóbbi időben még két további műveletet definiálnak, az egész osztás és a maradékképzés műveletét. Az első két egész szám hányadosának egész részét, a maradékképzés pedig az osztási maradékot eredményezi.

A valós számok tárolásánál azt használjuk fel, hogy minden valós szám felírható normál alakban. Ellentétben a matematikával, ahol a normálalakra hozás l és 10 közötti számot eredményez, a számítástechnikában a számokat 0 és l közötti értékűvé alakítjuk. Nézzünk néhány példát!

-123,25 = -0,12325-103;

0,00347 = 0,347-10-2

Általában

ahol M a mantissza, azaz a tizedes jegyek sorozata binárisra átváltva. Mivel minden normálalakú számban az egész rész nulla, ezt és a tizedesvesszőt nem kell tárolni. B a számrendszer alapszáma, az e pedig a hatványkitevő, a karakterisztika.

A valós számokat 4 vagy 8 bájt hosszban tároljuk, de a hossz ettől eltérő is lehet. Általában a karakterisztika tárolása l bájton valósul meg, így a mantissza tárolására marad 3 vagy 7 bájt. A négybájtos valós számot szokás egyszeres pontosságú valósnak, a 8 bájtosat pedig kétszeres pontosságú valósnak nevezni, a pontosan ábrázolt számjegyek száma alapján, ami az első esetben 7-8, a második esetben pedig 15-16 decimális számjegy.

A mantissza előjeles, itt tároljuk a szám előjelét. A hatványkitevő is előjeles, de itt nem a szokásos előjelbittel különböztetjük meg a pozitív és negatív számokat. A karakterisztikánál az úgynevezett 128-többletes kódolást alkalmazzuk. E szerint a 0 érték -128-nek, 255 pedig +127-nek felel meg, így a karakterisztikát előjel nélküli egész számként tárolhatjuk. A normál alakú szám hatványkitevőjéhez 128-at kell adni, úgy kapjuk meg a karakterisztikát.

A valós számok körében mind a négy alapművelet elvégezhető.

Bt szeretnénk szólni arról, hogy a számítástechnikai rendszerekben önálló műveletként definiált az előjelváltás, és néhány rendszer ismeri a hatványozás müveletét is. A műveletek kiértékelése pontos szabály, a precedencia szabály alapján történik. E szerint a műveletek végrehajtási sorrendje: hatványozás, előjelváltás, szorzás és osztás, összeadás és kivonás. Ezek után következnek a relációk és a logikai műveletek. A szorzás és az osztás, valamint az összeadás és a kivonás egy szinten helyezkednek el. Az egy szintű műveletek között balról jobbra kell a kijelölt műveleteket végrehajtani. Természetesen zárójelezéssel megváltoztathatjuk a precedencia szabály szabta sorrendet. A zárójeleket egymásba is lehet ágyazni, ekkor belülről kifelé történik a kiértékelés.