a számrendszerekrszucs/progalap/... · a számrendszerekr l általában 3 Érdekes kérdés, hogy...

38
A számrendszerekrl általában Készítette: Dávid András

Upload: others

Post on 31-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

Készítette: Dávid András

Page 2: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

2

Miért foglalkozunk vele? (Emlékeztető)A mai számítógépek többsége Neumann-elvű.Neumann János a következő elveket fektette le:

1. A számítógép legyen univerzális (több célra felhasználható – programvezérelt)! 2. A programot az adatokhoz hasonlóan tároljuk a gépben! Adat és program memória

szükségessége, 3. A gép működésének alapja a bináris (kettes) számrendszer legyen. Egyszerűbb

áramköri megvalósítás, két állapot.

Az előadás témája Előadásunk témája a Neumann-elv 3. pontja értelmében a számrendszerek és a számrendszerek közötti átváltások, valamint az egész és a valós számok ábrázolása. Későbbi tanulmányaink során (pl. digitális technika, programozás) találkozni fogunk a számrendszerekről tanultakkal.

Alapismeretek Eddigi matematikai tanulmányaink során két fogalommal már találkoztunk. Ez az alaki- és a helyi érték.

1. Az alaki érték: Az információt a számjegy alakja hordozza. Pl. az 5 jelenthet 5 db labdát, 5 db számítógépet, stb.

2. A helyi érték: Az információt a számjegy adott számban elfoglalt helye hordozza. Pl. 10-es számrendszerben a 123-ban az 1-es számjegy a százas helyi értéken, a 2-es a tízes helyi értéken, a 3-as az egyes helyi értéken szerepel. Maga a szám: 1*100+2*10+3*1=123.

A számítástechnikában a 2-es, a 8-as és a 16-os számrendszer használatos. A 2-es számrendszerben a számjegyeket szokás bit-nek, 8 bit-ből álló számot bájtnak nevezni. A biteket jobbról 0-val kezdve indexeljük.

1 bájt

helyi értékek

bitek sorszáma017 23456

202127 2223242526

1 bit

a legnagyobb a legkisebbhelyi értékű bit

Page 3: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

3

Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes számrendszerben tudjuk, hogy 10 db számjegy van (0-9). A kettes számrendszerben 2 db számjegy létezik, ez a 0 és az 1. A nyolcasban 8 db, (0-7), a tizenhatosban 16 db, (0-9 és A-F). Minden helyi értéken csak egy db számjegy lehet, ezért a 9 utáni számjegyeket az angol ábécé nagybetűivel jelöljük. A 10-nek az A, a 11-nek a B, … a 15-nek az F felel meg. Következésképpen egy adott számrendszerben a számjegyek száma egyenlő a számrendszer alapjával, a számjegyek pedig 0-tól számrendszer alapja-1-ig terjednek.

Számrendszerek közötti átváltások, konverziók

1. Tízes számrendszer ⇒⇒⇒⇒ más számrendszer Mi a tízes számrendszerben nőttünk fel, így első lépésként vizsgáljuk meg, hogyan tudunk tízes számrendszerben felírt számot átváltani más számrendszerbe. Két módszert említünk meg.

1. 1. Osztásos módszer. Az átváltandó számot osztjuk az új számrendszer alapjával, a maradékot feljegyezzük (ez lesz az új számrendszerbeli szám egy számjegye). A hányadost ismét osztjuk az új számrendszer alapjával, a maradékot feljegyezzük. Ezt a műveletet ismételten addig végezzük, amíg 0-át nem kapunk hányadosként. A maradékokat visszafelé olvasva megkapjuk az átváltandó szám új számrendszerbeli alakját. Példaként írjuk fel az 553, mint 10-es számrendszerben felírt szám 2-es, 8-as, 16-os számrendszerbeli alakját!

a) Tízes számrendszer ⇒ kettes számrendszer konverzió (ismételten osztunk 2-vel) 553 1276 0138 069 134 017 18 04 02 01 10

Az eredmény: 55310=10001010012

Page 4: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

4

b) Tízes számrendszer ⇒ nyolcas számrendszer konverzió (ismételten osztunk 8-al) 553 1

69 58 01 10

Az eredmény: 55310=10518

c) Tízes számrendszer ⇒ tizenhatos számrendszer konverzió (ismételten osztunk 16-al)

553 934 22 20

Az eredmény: 55310=22916

1. 2. Helyi értékes módszer. Írjuk fel az új számrendszer helyi értékeit. Az átváltandó számban keressük meg az új számrendszer legnagyobb helyi értékét, amellyel osztható az átváltandó szám. Osszuk el a számot a megtalált legnagyobb helyi értékkel, a hányadost írjuk be a megfelelő helyi értékre. Az átváltandó számot csökkentsük a hányados*helyi érték értékével. Az eredményre alkalmazzuk a módszert mindaddig, amíg 0-t nem kapunk eredményül. Példaként írjuk fel az 553, mint tízes számrendszerbeli szám nyolcas számrendszerbeli alakját! A nyolcas számrendszer helyi értékei 80=1; 81=8; 82=64; 83=512; stb.

80818283

Az 553-ban az 512 mint legnagyobb helyi érték megtalálható, így az 553:512 osztás hányadosát (1) beírjuk az 512-es helyi értékre.

80818283

1

Az átváltandó számot csökkentjük 1*512-vel. Így 41-et kapunk. A 41-ben 8 mint legnagyobb helyi érték megtalálható, így a 41:8 osztás hányadosát (5) beírjuk a 8-as helyi értékre.

80818283

1 5

Page 5: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

5

Az átváltandó számot csökkentjük 5*8-al. Így 1-et kapunk. Az 1-ben 1 mint legnagyobb helyi érték megtalálható, így az 1:1 osztás hányadosát (1) beírjuk az 1-es helyi értékre.

80818283

1 5 1 Az 1-et csökkentjük 1-el. 0-át kapunk, így végeztünk az átváltással. A nem kitöltött helyi értékekhez értelemszerűen 0-át írunk. Az eredmény: 55310=10518

A helyi értékes módszer gyorsabb, a gyakorlatban mégis az első (osztásos) módszert alkalmazzák gyakrabban, mivel könnyű rá számítógépes algoritmust írni. A gyakorlaton ezt mi is meg fogjuk tenni.

2. Bármely számrendszer ⇒⇒⇒⇒ tízes számrendszer

2. 1. Helyi érték*alaki érték módszere Az átváltás lényege, hogy az átváltandó szám számrendszerében a megfelelő alaki értékek és helyi értékek szorzatát összegezzük. Példaként ellenőrizzük az 1-es pontban végzett konverzióink helyességét! Írjuk fel az 10001010012 szám tízes számrendszerbeli megfelelőjét!

helyi értékek202127 222324252629 28

100 010101 0

1*29 + 0*28 + 0*27 + 0*26 + 1*25 + 0*24 + 1*23 + 0*22 + 0*21 +1*20 = 553 Az eredmény: 10001010012 = 55310 Írjuk fel az 10518 szám tízes számrendszerbeli megfelelőjét!

80818283

1 5 10

1*83 + 0*82 + 5*81 + 1*80 = 553 Az eredmény: 10518 = 55310 Írjuk fel a 22916 szám tízes számrendszerbeli megfelelőjét!

2 92160161162

2*162 + 2*161 + 9*160 = 553 Az eredmény: 22916 = 55310

Page 6: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

6

2. 2. Horner séma A konverzió során kiindulunk az átváltandó szám legbaloldalibb (legnagyobb helyi értékű)számjegyéből. Megszorozzuk az átváltandó szám számrendszerének alapjával, majd hozzáadjuk a következő számjegyet. Ezt a módszert addig ismételjük, amíg „el nem fogy” az átváltandó szám. Írjuk fel az 10001010012 szám tízes számrendszerbeli megfelelőjét!

helyi értékek202127 222324252629 28

100 010101 0

((((((((1*2+0)*2+0)*2+0)*2+1)*2+0)*2+1)*2+0)*2+0)*2+1=553 Az eredmény: 10001010012 = 55310 Írjuk fel az 10518 szám tízes számrendszerbeli megfelelőjét!

80818283

1 5 10

((1*8+0)*8+5)*8+1=553 Az eredmény: 10518 = 55310 Írjuk fel a 22916 szám tízes számrendszerbeli megfelelőjét!

2 92160161162

(2*16+2)*16+9=553 Az eredmény: 22916 = 55310

Page 7: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

7

3. Kettes alapú számrendszerek közötti gyors konverziók A számítógépek kettes számrendszerbeli számokkal dolgoznak. Talán már − az eddigiek alapján − feltűnt, hogy a kettes számrendszerbeli számok hosszúak, terjedelmesek, nehéz őket leírni. Oldjuk meg, hogy tömörebben leírhatók legyenek ezek a számok! Erre olyan más számrendszerek kellenek melyek könnyen átválthatók kettes számrendszerbe. A számítástechnika területén a nyolcas és a tizenhatos számrendszer terjedt el. A gyors konverzió megértéséhez nézzük meg, hogy a 8-as illetve a 16-os számrendszer számjegyei milyen kettes számrendszerbeli számokkal írhatók le!

8-as számrendszerbeli

számjegy

2-es számrendszerbeli

megfelelő

16-os számrendszerbeli

számjegy

2-es számrendszerbeli

megfelelő0 000 0 0000 1 001 1 0001 2 010 2 0010 3 011 3 0011 4 100 4 0100 5 101 5 0101 6 110 6 0110 7 111 7 0111

8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111

Megfigyelhetjük, hogy minden egyes 8-as számrendszerbeli számjegy felírható 3 bites 2-es számrendszerbeli számmal, illetve minden egyes 16-os számrendszerbeli számjegy felírható 4 bites 2-es számrendszerbeli számmal. Az átalakítás elve a csoportosítás.

3. 1. 2-es számrendszerbeli szám átalakítása 8-as, illetve 16-os számrendszerbe Az átalakítás során az átváltandó szám bitjeit a legkisebb helyi értéktől (jobbról) kezdve 3 bites (8-as számrendszerbe átalakítás), illetve 4 bites (16-os számrendszerbe való átalakítás) csoportokba foglaljuk. Az egyes csoportokat helyettesítjük az adott csoportnak megfelelő 8-as, illetve 16-os számrendszerbeli számjeggyel.

Page 8: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

8

Írjuk fel a 100110001012 számot 8-as illetve 16-os számrendszerben!

503101 10010 0 01

2

hármascsoportok

a hármascsoportoknakmegfelelő 8-as

számrendszerbeliszámjegyek

A megoldás: 100110001012 = 23058

5C101 10010 0 01

4

négyescsoportok

a négyescsoportoknak

megfelelő 16-osszámrendszerbeli

számjegyek A megoldás: 100110001012 = 4C516

3. 2. 8-as, illetve 16-os számrendszerbeli szám átalakítása 2-es számrendszerbe Az átalakítás során egyszerűen helyettesítjük a 8-as illetve a 16-os számrendszerbeli számjegyeket a neki megfelelő 3, illetve 4 bites kettes számrendszerbeli megfelelőjükkel. Írjuk fel 23058, illetve a 4C516 kettes számrendszerbeli megfelelőjét!

A megoldás: 23058 = 0100110001012 4C516 = 0100110001012

503000 101011

2010

8-asszámrendszerbeli

számjegyek

a megfelelő 2-esszámrendszerbeli

számok

5C1100 0101

16-osszámrendszerbeli

számjegyek

a megfelelő 2-esszámrendszerbeli

számok

40100

Page 9: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

9

Gyakorló feladatok Végezze el az alábbi konverziókat!

10-es 2-es 8-as 16-os számrendszer

255 1024 1526 2056

65535 11000110111 1101100011

1256 365

12AC A2F

32000 1100111000111

ACF1 5270

11001101 12530

ADC 410

4500 110010000

1ACF 367

101100001111 A210

12650

Page 10: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

10

Műveletek tízestől eltérő számrendszerbeli számokkal Ebben a részben elsősorban a kettes és a tizenhatos számrendszerbeli számok közötti műveleteket vizsgáljuk meg, de az elmondottak érvényesek bármely alapú számrendszerre. Foglalkozzunk egyelőre a pozitív számokkal!

1. Összeadás Példaként végezzük el a 123+59 műveletet kettes, nyolcas és tizenhatos számrendszerben!

27 26 25 24 23 22 21 20103 102 101 100 83 82 81 80 163 162 161 160

1 2 35 9

1 8 2

111111 010 111 1

01101101

31 737662

B7B36B

+ + + += = = =

2. Kivonás Példaként végezzük el a 123-59 műveletet kettes, nyolcas és tizenhatos számrendszerben!

27 26 25 24 23 22 21 20103 102 101 100 83 82 81 80 163 162 161 160

1 2 35 9

0 6 4

111111 010 111 1

0000001

31 737001

B7B304

- - - -= = = =

3. Szorzás, osztás A szorzás és az osztás műveletére bonyolultsága miatt nem térünk ki.

A műveletek egyszerűsítése A Neumann-elvű számítógépek kettes számrendszerben dolgoznak. A számítógép aritmetikai egységének fejlesztői törekedtek arra, hogy minél olcsóbb áramköri egységeket hozzanak létre. Ezért pl. sok processzor − az első processzorok, kivéve a matematikai társprocesszorokat − csak összeadni tud. Hogyan tudjuk akkor végrehajtani a kivonást, szorzást, és a többi műveletet? A megoldás az, hogy minden műveletet visszavezetünk összeadásra. A kivonás nem más, mint a kisebbítendő és a kivonandó ellentettjének az összege. A fenti példa esetén a 123-59 művelet helyettesíthető a 123+(-59) művelettel. A megoldandó probléma a -59 felírása kettes, nyolcas, tizenhatos számrendszerben. A szorzás visszavezethető sorozatos összeadásra (pl. 3*59=59+59+59), az osztás pedig sorozatos kivonásra.

Page 11: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

11

Számok ábrázolása A továbbiakban csak kettes számrendszerben felírt számokkal foglalkozunk. A számítógépek processzorának regiszterei illetve az operatív memória egységei csak fix hosszúságú számokat képesek tárolni, illetve a processzor műveletvégző egységei csak fix hosszúságú számokkal képesek dolgozni. Pl. 8 bit = 1 bájt, 16 bit = 2 bájt. Az egyszerűség kedvéért a továbbiakban 1 bájtos adatokkal dolgozunk. A pozitív számokat egyszerű kettes számrendszerbeli számként tároljuk. A kérdés, hogy a negatív számokat hogyan ábrázoljuk. Az egyik megoldás lehet − a leggyakrabban ezt alkalmazzák −, hogy az előjel számára kijelölnek egy bitet.

legkisebbhelyiértékű bit

előjelbit

20212223242526

Az előjelbit nem rendelkezik helyi érték információval, feladata csupán az ábrázolt szám előjelének tárolása. Megállapodás szerint, ha az előjelbit 0, akkor az ábrázolt szám pozitív, ha 1, akkor negatív. A szám abszolút értékét ezek után ábrázolhatnánk egyszerű kettes számrendszerbeli számként, de a legtöbbször mégsem ezt tesszük. Mint említettük minden műveletet igyekeznek összeadásra visszavezetni. Hogy ez minél egyszerűbben megtehetőlegyen a negatív számokat ún. kettes komplemens kódban ábrázolják. A kettes komplemens kód nem más, mint az additív inverz. Ha egy számhoz hozzáadjuk a kettes komplemensét − additív inverzét −, akkor 0-át kapunk eredményül. Egy kettes számrendszerbeli szám kettes komplemens kódját az alábbi két módszer valamelyikével képezhetjük:

a) A legjobboldalibb (legkisebb helyi értékű) bittől indulva minden bitet ellenkezőjére (0 helyett 1-et, 1 helyett 0-át írva) változtatunk (egyes komplemens), majd a legkisebb helyi értékű bithez hozzáadunk 1-et.

b) A legjobboldalibb (legkisebb helyi értékű) bittől indulva az első 1-ig minden bitet változatlanul leírunk (beleértve magát az első 1-est is), majd a többi bitet ellenkezőjére változtatjuk.

Példaként végezzük el a 123-59 műveletet, úgy, hogy összeadást végzünk. A megoldás értelmében a 123+(-59) műveletet fogjuk elvégezni. A -59-et az 59-es szám kettes komplemens kódjával fogjuk ábrázolni. (A negatív számokat mindig kettes komplemens kódban ábrázoljuk!)

Page 12: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

12

0000001=

111111 010 111 1-

026 25 24 23 22 21 20

előjelbit helyiértékek103 102 101 100

1 2 35 9-

111111 001 100 0+

026 25 24 23 22 21 20

előjelbit helyiértékek

110

0

az 59 ketteskomplemens

kódja

negatív szám: -59 További kérdés, hogy egy negatív szám abszolút értékét hogyan tudjuk meghatározni. A negatív számokat kettes komplemens kódban tároljuk, így az abszolút értéküket a kettes komplemens képzés szabályának újabb alkalmazásával tudjuk meghatározni.

Ábrázolási tartomány A számítástechnikában, programozási gyakorlatban előjeles és előjel nélküli számokkal dolgozunk. Mekkora a legkisebb és a legnagyobb ábrázolható szám? A válasz természetesen függ attól, hogy hány biten tároljuk az adatokat. Néhány példa: Előjel nélküli 1 bájtos adat. 8 bit áll rendelkezésünkre, 8 biten 28 azaz 256 különbözőszámot ábrázolhatunk. A legkisebb szám a 0 (minden bit 0), a legnagyobb szám a 28-1, vagyis 255 (minden bit 1). Előjel nélküli 2 bájtos adat. 16 bit áll rendelkezésünkre, 16 biten 216 azaz 65536 különbözőszámot ábrázolhatunk. A legkisebb szám a 0 (minden bit 0), a legnagyobb szám a 216-1, vagyis 65535 (minden bit 1). Előjeles 1 bájtos adat. A legbaloldalibb bit (7. bit) előjelbit, így adattárolásra 7 bit áll rendelkezésünkre. A legkisebb szám a -27, azaz -128 (10000000), a legnagyobb szám a 27-1, vagyis 127 (01111111). A 0 alakja 00000000, a -1-nek a 11111111 felel meg. Előjeles 2 bájtos adat. A legbaloldalibb bit (15. bit) előjelbit, így adattárolásra 15 bit áll rendelkezésünkre. A legkisebb szám a -215, azaz -32768 (1000000000000000), a legnagyobb szám a 215-1, vagyis 32767 (0111111111111111).

Page 13: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

13

Gyakorló feladatok Végezze el az alábbi műveleteket!

10-es 2-es 8-as 16-os Számrendszer

1254+657 1100110+11011

567+217 AC4+B1

1254-657 1100110-11011

567-217 AC4-B1

110011+1100 12569+3562

621+54 C45+4F

110011-1100 12569-3562

621-54 C45-4F

2744+256 1298+458

11001111100+1101 A21+FF

2744+256 1298+458

11001111100+1101 A21+FF

Page 14: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

14

Néhány érdekes feladat Végezzük el a 139+153 műveletet kettes számrendszerben 1 bájtos előjel nélküli adatokkal! Mit tapasztalunk?

27 26 25 24 23 22 21 20

111000 000 110 1

00100100

11 0

1

139153292

Kikötöttük, hogy az adataink 1 bájtosak. Megfigyelhetjük, hogy a 7. bitek összeadásakor keletkezik átvitel. Mi történik az átvitellel? Ebben az esetben elveszik. Azt mondhatjuk, hogy az eredmény túlcsordult. Az eredmény 36. Rossz eredményt kaptunk, aminek az oka, hogy az összeg nem fér el 1 bájton. Erre valahogy figyelmeztetni kell a programozót! Erre és más események jelzésére szolgálnak a processzorban levő „flag regiszter” különböző bitjei (jelen esetben a „túlcsordulás bit”). Végezzük el a 120+53 műveletet kettes számrendszerben 1 bájtos előjeles adatokkal! Mit tapasztalunk?

1011010

001111 001 111 0

026 25 24 23 22 21 20előjelbit

001

120 53173

Az eredmény -83. Két pozitív számot adunk össze (az előjelbit 0), az eredmény negatív (az összeg előjelbitje 1). Hogy lehetséges ez? Ha megfigyeljük, akkor a 6. bitek összeadásakor átvitel keletkezik. Ez az átvitel „elrontja” az előjelbitet. Az előbb említett flag regiszter tartalmaz egy előjeljelző bitet is, melyet a programozó lekérdezve megkapja az eredmény előjelét. Hasonló hiba előfordulhat oly módon, hogy két negatív szám összegére pozitív eredményt kapunk. Tanulságként megfogalmazható, hogy figyelnünk kell az ábrázolási tartományra. Mindkét példa esetén a hibát az okozta, hogy az eredmény nem fért el a rendelkezésre álló helyen.

Page 15: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számrendszerekről általában

15

Egy kis digitális technika Hogyan működik a 3 bites összeadó?

B A Ci-1 ∑ Ci 0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1

Page 16: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

A számábrázolásról

Page 17: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

17

Egész típus

Az egész típus bemutatása A programozási gyakorlat egyik gyakran használt elemi adattípusa az egész típus, melyet leggyakrabban 2 bájton ábrázolnak kettes komplemens kódban.

Az egész típus jellemzőiÉrtékhalmaz: -215 … +215-1. Általánosan: Min’Egész … Max’Egész. Műveletek: +, -, *, Div (egészosztás/hányadosképzés), Mod (maradékképzés), ^ (pozitív egész kitevős hatványozás), ~ unáris mínusz. Relációk: =, ≠, <, ≤, >, ≥.Ábrázolás: 2 bájtos, kettes komplemens kód.

Az egész számokat kettes számrendszerben valahány bites (bájtos) kettes komplemens kóddal ábrázoljuk. A feladatok során az egész számokat 2 bájton tároljuk.

Az egész típus ábrázolása

Az ábrázolás lépései:1. lépés: Az ábrázolandó szám abszolút értékét átváltjuk kettes számrendszerbe, és ha szükséges kiegészítjük 16 bit hosszúságúra.

2. lépés: Az ábrázolás során a legbaloldalibb bitet előjelbitként kezeljük. Az előjelbit 0, ha a szám pozitív, 1, ha negatív. Az ábrázolás módja:

• A pozitív számokat szokásos bináris számként tároljuk. • A negatív számokat – hogy a lehető legegyszerűbb legyen velük a műveletvégzés –

kettes komplemens kódban (additív inverz) ábrázoljuk. Az additív inverz jelentősége, hogy ha az eredeti számhoz hozzáadjuk a kettes komplemens kódját – elfeledkezve az előjelbit különleges jelentéséről – akkor 0-át (azaz csupa 0 bitből álló számot) kapunk.

Page 18: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

18

Egy bináris szám kettes komplemens kódját az alábbi két módszer valamelyikével képezhetjük:

a) A legjobboldalibb (legkisebb helyi értékű) bittől indulva minden bitet ellenkezőjére (0 helyett 1-et, 1 helyett 0-át írva) változtatunk (egyes komplemens), majd a legkisebb helyi értékű bithez hozzáadunk 1-et.

b) A legjobboldalibb (legkisebb helyi értékű) bittől indulva az első 1-ig minden bitet változatlanul leírunk (beleértve magát az első 1-est is), majd a többi bitet ellenkezőjére változtatjuk.

3. lépés: A logikai sorrendhez képest (magas-, alacsony helyi értékű bájt) a memóriában való ábrázoláskor bájtcsere történik. Az alábbi ábra a logikai sorrendet mutatja:

legkisebb helyiértékű bit

előjelbit

2021272829

alacsonyabb helyi értékű bájtmagasabb helyi értékű bájt A memóriában fizikailag a magasabb és az alacsonyabb helyi értékű bájt helyet cserél.

alacsonyabb helyi értékű bájt magasabb helyi értékű bájt

További jellemzőkAz egész típus alapvetően megegyezik a matematikában használt egész számokkal, gyakorlatilag azonban a számítógép véges számábrázolása miatt az egész számkörnek csak egy véges tartományát tartalmazza. Emiatt az egész számok köre az elemi aritmetikai műveletekre (+,-,*) nem zárt, így aritmetikai műveletek közben egész túlcsordulás fordulhat elő. A zártság hiánya miatt a számítógépes egész számok műveleteire nem mindig teljesül az asszociativitás és a disztributivitás. Az egész számoknak a programozásban sokféle változata létezik. Ezek egymástól a Min’Egész és a Max’Egész értékben, illetve előjeles, nem előjeles tulajdonságban különböznek. Hosszú egész: Min’Egész=-231, Max’Egész=231-1, előjeles Bájt: Min’Egész=0, Max’Egész=28-1, előjel nélküli Szó: Min’Egész=0, Max’Egész=216-1, előjel nélküli

Page 19: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

19

Egész számok ábrázolása

Mintafeladatok

1. Feladat Egy példán keresztül ismertesd az egész számok ábrázolásáról tanultakat!

Az egész számokat kettes számrendszerben valahány bites (bájtos) kettes komplemens kóddal ábrázoljuk. A feladatok során az egész számokat 2 bájton tároljuk.

Az ábrázolás lépései:1. lépés: Az ábrázolandó szám abszolút értékét átváltjuk kettes számrendszerbe, és ha szükséges kiegészítjük 16 bit hosszúságúra.

2. lépés: Az ábrázolás során a legbaloldalibb bitet előjelbitként kezeljük. Az előjelbit 0, ha a szám pozitív, 1, ha negatív. Az ábrázolás módja:

• A pozitív számokat szokásos bináris számként tároljuk. • A negatív számokat – hogy a lehető legegyszerűbb legyen velük a műveletvégzés –

kettes komplemens kódban (additív inverz) ábrázoljuk. Az additív inverz jelentősége, hogy ha az eredeti számhoz hozzáadjuk a kettes komplemens kódját – elfeledkezve az előjelbit különleges jelentéséről – akkor 0-át (azaz csupa 0 bitből álló számot) kapunk.

Egy bináris szám kettes komplemens kódját az alábbi két módszer valamelyikével képezhetjük:

a) A legjobboldalibb (legkisebb helyi értékű) bittől indulva minden bitet ellenkezőjére (0 helyett 1-et, 1 helyett 0-át írva) változtatunk (egyes komplemens), majd a legkisebb helyi értékű bithez hozzáadunk 1-et.

b) A legjobboldalibb (legkisebb helyi értékű) bittől indulva az első 1-ig minden bitet változatlanul leírunk (beleértve magát az első 1-est is), majd a többi bitet ellenkezőjére változtatjuk.

3. lépés: A logikai sorrendhez képest (magas-, alacsony helyi értékű bájt) a memóriában való ábrázoláskor bájtcsere történik.

Page 20: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

20

Az alábbi ábra a logikai sorrendet mutatja: legkisebb helyi

értékű bitelőjelbit

2021272829

alacsonyabb helyi értékű bájtmagasabb helyi értékű bájt A memóriában fizikailag a magasabb és az alacsonyabb helyi értékű bájt helyet cserél.

alacsonyabb helyi értékű bájt magasabb helyi értékű bájt

Példaként határozzuk meg a -553 egészszám memóriabeli alakját!

Megoldás:1. lépés: A szám abszolút értékét átváltjuk kettes számrendszerbe (osztunk kettővel – közben a maradékot feljegyezzük – amíg 0-át nem kapunk hányadosként), és ha szükséges a kapott bináris számot kiegészítjük 16 bit hosszúságúra.

553 1276 0138 069 134 017 18 04 02 01 10

A szám abszolút értéke kiegészítve 16 bitre: 1010010000001000

2. lépés: Mivel a szám negatív, így képezzük a kettes komplemens kódot.

1110101110111111

alacsonyabb helyi értékű bájtmagasabb helyi értékű bájt

Page 21: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

21

3. lépés: A memóriabeli fizikai elhelyezkedésben a logikai alakhoz képest bájtcsere történik.

11101011

alacsonyabb helyi értékű bájt

10111111

magasabb helyi értékű bájt

2. Feladat Határozd meg a -1234 egészszám memóriabeli alakját! Megoldás:

1. lépés: A szám abszolút értékét átváltjuk kettes számrendszerbe és ha szükséges a kapott bináris számot kiegészítjük 16 bit hosszúságúra.

1234 0617 1308 0154 077 138 019 19 14 02 01 10

A szám abszolút értéke kiegészítve 16 bitre: 0100100000010011

2. lépés: Mivel a szám negatív, így képezzük a kettes komplemens kódot.

0111010011011111

alacsonyabb helyi értékű bájtmagasabb helyi értékű bájt 3. lépés: A memóriabeli fizikai elhelyezkedésben a logikai alakhoz képest bájtcsere történik.

01110100

alacsonyabb helyi értékű bájt

11011111

magasabb helyi értékű bájt

Page 22: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

22

3. Feladat Határozd meg az alábbi egész szám értékét az ábrán látható memóriabeli alakjából!

0110110111011001

Megoldás:

1. lépés: A memóriabeli alakhoz képest bájtcserét kell alkalmazni a logikai sorrend előállításához.

01101101

alacsonyabb helyi értékű bájt

11011001

magasabb helyi értékű bájt 2. lépés: Mivel a legbaloldalibb bit 1-es, így negatív számról van szó. A szám abszolút értékének megállapításához alkalmaznunk kell a kettes komplemens képzés szabályát. A fenti alak kettes komplemens kódja:

1010011010010010

3. lépés: Előállítjuk a szám abszolút értékét decimális számrendszerben.

=Z 20+22+25+26+28+211+214 = 1+4+32+64+256+2048+16384=18789

4. lépés: Az ábrázolt szám: -18789

4. Feladat Mely egész szám memóriabeli alakja a következő?

11001110 11011001

Megoldás:

1. lépés: A memóriabeli alakhoz képest bájtcserét kell alkalmazni a logikai sorrend előállításához.

magasabb helyi értékű bájt alacsonyabb helyi értékű bájt

1100111011011001

Page 23: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

23

2. lépés: Mivel a legbaloldalibb bit 1-es, így negatív számról van szó. A szám abszolút értékének megállapításához alkalmaznunk kell a kettes komplemens képzés szabályát. A fenti alak kettes komplemens kódja:

1011000100100110

3. lépés: Előállítjuk a szám abszolút értékét decimális számrendszerben.

=Z 20+22+23+27+210+213+214 = 1+4+8+128+1024+8192+16384 = 25741

4. lépés: Az ábrázolt szám: -25741

5. Feladat Határozd meg a -31958 egészszám memóriabeli alakját, majd ellenőrizd az ábrázolás helyességét! Megoldás:

1. lépés: A szám abszolút értékét átváltjuk kettes számrendszerbe és ha szükséges a kapott bináris számot kiegészítjük 16 bit hosszúságúra.

31958 015979 17989 13994 01997 1998 0499 1249 1124 062 031 115 17 13 11 10

A szám abszolút értéke kiegészítve 16 bitre: 0101100111110011

Page 24: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

24

2. lépés: Képezzük a 2-es komplemens kódot, mivel az ábrázolandó szám negatív.

magasabb helyi értékű bájt alacsonyabb helyi értékű bájt

0101010011000001

3. lépés: A memóriabeli fizikai elhelyezkedésben a logikai alakhoz képest bájtcsere történik. Az adott szám memóriabeli alakja a következő:

magasabb helyi értékű bájt

11000001

alacsonyabb helyi értékű bájt

01010100

Ellenőrizzük a megoldásunk helyességét! 1. lépés: A memóriabeli alakhoz képest bájtcserét kell alkalmazni a logikai sorrend előállításához.

magasabb helyi értékű bájt alacsonyabb helyi értékű bájt

0101010011000001

2. lépés: Mivel a legbaloldalibb bit 1-es, így negatív számról van szó. A szám abszolút értékének megállapításához alkalmaznunk kell a kettes komplemens képzés szabályát. A fenti alak kettes komplemens kódja:

0110101100111110

3. lépés: Előállítjuk a szám abszolút értékét decimális számrendszerben.

=Z 21+22+24+26+27+210+211+212+213+214 = 2+4+16+64+128+1024+2048+4096+ +8192+16384 = 31958 4. lépés: Az ábrázolt szám: -31958, vagyis a megoldásunk helyes.

Page 25: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Egész típus

25

Gyakorlófeladatok

1. Határozd meg az alábbi két bájtos egész számok memóriabeli alakját! 1236, -1236; 13210, -13210; 360, -360; 1005, -1005; 10050, -10050; Ellenőrizd a megoldásod!

2. Határozd meg a megfelelő egész számokat az alább látható memóriabeli alakjukból!

a) 1100011110101010

b) 01001011 01000101

c) 1001010101001010

d) 1001111010000111

e) 1111001011001001

3. Határozd meg a legkisebb két bájtos egész szám memóriabeli alakját! 4. Határozd meg a legnagyobb két bájtos egész szám memóriabeli alakját!

5. Ábrázold az alábbi számokat kettes számrendszerben 2 bájton! (A negatív számokat kettes komplemens kódban ábrázoljuk.)

(1255, -845); (22322, 15400); (-32000, -5400) a) Add össze a zárójelbe tett számokat a kettes számrendszerbeli ábrázolás szintjén! b) Ellenőrizd megoldásod helyességét! c) Írd le és indokold tapasztalataidat!

Page 26: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

26

Valós típus A valós típus bemutatása A programozási gyakorlat egyik gyakran használt elemi adattípusa a valós típus, melyet leggyakrabban 6 bájton ábrázolnak ún. lebegőpontos, normalizált, eltolt nullapontú alakban.

A valós típus jellemzőiÉrtékhalmaz: nem definiálható a Min’Valós..Max’Valós tartomány, mivel nem igaz, hogy a valós számok értékhalmaza az e két érték közötti összes valós értéket tartalmazza. Műveletek: +, -, *, /, ^ (pozitív egész kitevős hatványozás), ~ unáris mínusz. Relációk: =, ≠, <, ≤, >, ≥.Ábrázolás: általában 6 bájton, ún. lebegőpontos, normalizált, eltolt nullapontú alakban.

A valós típus ábrázolása A valós számokat kettes számrendszerben, „lebegőpontos, normalizált, eltolt nullapontú” alakban ábrázoljuk. Egy valós számot X = m * 2k alakban írhatunk fel, ahol „m” a mantissza, „k” a karakterisztika. Ez még végtelen sok felírást jelenthet, így kikötjük, hogy a mantisszára teljesülnie kell az 12/1 <≤ m feltételnek (normalizált alak).

A mintafeladatok során a valós számokat 6 bájton − 5 bájton a mantisszát és 1 bájton a karakterisztikát − fogjuk ábrázolni. Az ábrázolás lépései:1. lépés: Az ábrázolandó valós szám abszolút értékét (külön az egészrészt és a törtrészt) átváltjuk kettes számrendszerbe. Ez lesz a mantissza abszolút értéke. 2. lépés: A mantissza abszolút értékét megszorozzuk egy alkalmas kettő hatvánnyal, hogy teljesítse az előírt feltételt ( 12/1 <≤ m ). Ezt hívjuk normalizálásnak. Az alkalmazott kettő-hatvány kitevőjének ellentettje lesz a karakterisztika értéke. A normalizálás következtében a mantissza 2-1 helyi értékű bitje mindig 1-es értékű, így ez a bit új információt nem hordoz. Emiatt nem is tároljuk, hanem ezt a bitet kijelöljük előjelbitnek (0, ha a szám pozitív, 1, ha negatív). Tároljuk tehát a mantissza abszolút értékét kettes számrendszerben a 2-1 helyi értékű bitet előjelbitként kezelve. Ezt az ábrázolási módot szokás „majdnem kettes komplemens kódú” ábrázolásnak is nevezni.

Page 27: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

27

3. lépés: A karakterisztika is előjeles szám, így meg kell oldanunk a karakterisztika előjelének a tárolását. Lefoglalhatnánk egy bitet erre a célra, de ez az ábrázolható értékhalmaz felezését vonná maga után, így emiatt nem ezt a megoldást választjuk. A rendelkezésre álló memória terület felén negatív, felén pedig nem negatív értékeket ábrázolhatunk. A karakterisztikát az ábrázolható legkisebb karakterisztika abszolút értékével növeljük, majd egyszerűen átváltjuk kettes számrendszerbe. Ezt az ábrázolási módszert szokás „eltolt nullapontú ábrázolásnak” nevezni.

A mintafeladatok során a valós számot 6 bájtos valós típusú mennyiségként ábrázoljuk, ahol 5 bájton ábrázoljuk a mantisszát, 1 bájton a karakterisztikát, így az eltolt nullapontú ábrázolás azt fogja jelenteni, hogy a karakterisztikához 128-cat kell hozzáadni.

4. lépés: Logikailag először a mantissza bájtjai, helyi értékük szerint csökkenő sorrendben, majd a karakterisztika következnek. A fizikai (memóriabeli) sorrend a logikai sorrend megfelelőbájtjainak cseréjével alakul ki.

További jellemzőkA valós típus a matematikában használt valós számoknak megfelelő típus. A számítógépes számábrázolás véges volta miatt valós túlcsordulás léphet fel, a túlcsordulás miatt nem mindig teljesül az asszociativitás és a disztributivitás. További korlátozás, hogy ezek a számok csak a nevükben valósak, valójában racionális számok, méghozzá véges sok számjeggyel leírható tizedes illetve kettedes törtek. A műveletek elvégzése után az eredmény is csak adott pontossággal ábrázolható. Ha a műveletben szereplő két szám erősen eltérő nagyságrendű, akkor az eredmény kiszámítása közben alulcsordulás lép fel. Elképzelhető, hogy egy nagy számhoz hozzáadva egymás után több kisebb számot, az eredmény egyszer sem változik, a kis számok összeadása viszont már eredményezhet olyan nagyobb számot, amely az első helyen szereplő nagy számhoz hozzáadva már nem csordul alul. Ennek következménye, hogy az asszociativitás és a disztributivitás több esetben sérülhet, mint az egész számok körében. Valós számok decimális kiírásakor nem a pontos értéket látjuk, hanem egy kerekítettet. Ennek következménye, hogy a képernyőn látható A=B-ből nem következik, hogy A valóban egyenlő B-vel. Emiatt két valós szám egyenlőségét soha nem érdemes vizsgálni, csupán azt nézhetjük meg, hogy a különbségük elég kicsi-e.

Page 28: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

28

Valós számok ábrázolása

Mintafeladatok

1. Feladat Egy példán keresztül ismertesd a valós számok ábrázolásáról tanultakat! A valós számokat kettes számrendszerben, „lebegőpontos, normalizált, eltolt nullapontú” alakban ábrázoljuk. Egy valós számot X = m * 2k alakban írhatunk fel, ahol „m” a mantissza, „k” a karakterisztika. Ez még végtelen sok felírást jelenthet, így kikötjük, hogy a mantisszára teljesülnie kell az 12/1 <≤ m feltételnek (normalizált alak).

A mintafeladatok során a valós számokat 6 bájton − 5 bájton a mantisszát és 1 bájton a karakterisztikát − fogjuk ábrázolni. Az ábrázolás lépései:1. lépés: Az ábrázolandó valós szám abszolút értékét (külön az egészrészt és a törtrészt) átváltjuk kettes számrendszerbe. Ez lesz a mantissza abszolút értéke. 2. lépés: A mantissza abszolút értékét megszorozzuk egy alkalmas kettő hatvánnyal, hogy teljesítse az előírt feltételt ( 12/1 <≤ m ). Ezt hívjuk normalizálásnak. Az alkalmazott kettő-hatvány kitevőjének ellentettje lesz a karakterisztika értéke. A normalizálás következtében a mantissza 2-1 helyi értékű bitje mindig 1-es értékű, így ez a bit új információt nem hordoz. Emiatt nem is tároljuk, hanem ezt a bitet kijelöljük előjelbitnek (0, ha a szám pozitív, 1, ha negatív). Tároljuk tehát a mantissza abszolút értékét kettes számrendszerben a 2-1 helyi értékű bitet előjelbitként kezelve. Ezt az ábrázolási módot szokás „majdnem kettes komplemens kódú” ábrázolásnak is nevezni. 3. lépés: A karakterisztika is előjeles szám, így meg kell oldanunk a karakterisztika előjelének a tárolását. Lefoglalhatnánk egy bitet erre a célra, de ez az ábrázolható értékhalmaz felezését vonná maga után, így emiatt nem ezt a megoldást választjuk. A rendelkezésre álló memória terület felén negatív, felén pedig nem negatív értékeket ábrázolhatunk. A karakterisztikát az ábrázolható legkisebb karakterisztika abszolút

Page 29: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

29

értékével növeljük, majd egyszerűen átváltjuk kettes számrendszerbe. Ezt az ábrázolási módszert szokás „eltolt nullapontú ábrázolásnak” nevezni.

A mintafeladatok során a valós számot 6 bájtos valós típusú mennyiségként ábrázoljuk, ahol 5 bájton ábrázoljuk a mantisszát, 1 bájton a karakterisztikát, így az eltolt nullapontú ábrázolás azt fogja jelenteni, hogy a karakterisztikához 128-cat kell hozzáadni.

4. lépés: Logikailag először a mantissza bájtjai, helyi értékük szerint csökkenő sorrendben, majd a karakterisztika következnek. A fizikai (memóriabeli) sorrend a logikai sorrend megfelelőbájtjainak cseréjével alakul ki. Példaként határozzuk meg a -123.8 memóriabeli alakját!

Megoldás:1. lépés: A szám abszolút értékének egészrészét és törtrészét külön-külön átváltjuk kettes számrendszerbe.

a) Átváltjuk a 123-at kettes számrendszerbe. Osztunk kettővel – a maradékot feljegyezzük – amíg 0-át nem kapunk hányadosként.

123 161 130 015 17 13 11 10

A mantissza egész része: 1111011

b) Átváltjuk a 0.8-det kettes számrendszerbe! A konverzió során a törtrészt ismételten 2-vel szorozzuk miközben a szorzat egészrészét feljegyezzük. Ez 2-1-nel való ismételt maradékos osztásnak felel meg. A tizedespont előtt keletkező számjegyet, mely biztosan 0 vagy 1, mindig hozzáírjuk a törtrész kettes számrendszerbeli alakjához. Ha ennek során a törtrész tízes számrendszerbeli alakja egy korábbi állapotot vesz fel (ismétlődés), akkor e két állapot között keletkezett bitsorozattal ismételten növeljük a törtrész kettes számrendszerbeli alakját, mígnem kitöltjük a rendelkezésre álló helyet. Ha a törtrész tízes számrendszerbeli alakja 0-vá válik, a kettes számrendszerbeli alakot 0-val egészítjük ki.

Page 30: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

30

A törtrész átváltása: Ismétlődés

A mantissza törtrésze: 1100 A mantissza normalizálás előtt 1100 1111011.m = , míg a karakterisztika 0k = .

2. lépés: Következik a normalizálás. A mantisszát 2-7-el kell szorozni, így a karakterisztika 7 lesz. A mantissza normalizálás után 1100 1111011.0m = , a karakterisztika 7k =

Mivel a 2-1 helyi értékű bit mindig 1-es, így ezt nem tároljuk, helyette a szám előjelét ábrázoljuk ezen a helyen (0, ha szám pozitív, 1, ha negatív). Az ábrázolandó szám negatív, így a 2-1 helyi értéken levő bit 1-es lesz. A mantissza 1100 1111011.0m = , a karakterisztika 7k =

3. lépés: A karakterisztika 7. A karakterisztikát 1 bájton eltolt nullapontú ábrázolással tároljuk. Ez azt jelenti, hogy a karakterisztikához hozzáadjuk a legkisebb ábrázolható karakterisztika (-128) abszolút értékét, így 135-öt kell kettes számrendszerben tárolnunk.

135 167 133 116 08 04 02 01 10

A karakterisztika: 10000111

4. lépés: Logikailag először a mantissza bájtjai, helyi értékük szerint csökkenő sorrendben, majd a karakterisztika következnek. A fizikai (memóriabeli) sorrend a logikai sorrend megfelelőbájtjainak cseréjével alakul ki.

0.8 10.6 10.2 00.4 00.8

Page 31: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

31

A logikai sorrend:

1001100111101111

1001100110011001

10011001 11100001

mantissza1 mantissza2

mantissza3 mantissza4

mantissza5 karakterisztika

A fizikai sorrend:

11101111

mantissza1

10011001

mantissza4

10011001

mantissza5

11100001

karakterisztika

10011001

mantissza2

10011001

mantissza3

2. Feladat Határozd meg a -1245.275 memóriabeli alakját! Megoldás:

1. lépés: A szám abszolút értékének egészrészét és törtrészét külön-külön átváltjuk kettes számrendszerbe.

1245 1 0.275 0622 0 0.55 1311 1 0.1 0155 1 0.2 077 1 0.4 0 Ismétlődés 38 0 0.8 119 1 0.6 19 1 0.24 02 01 10

A mantissza egész része: 11001101110 , törtrésze: 0011010 A mantissza normalizálás előtt 00111.0101001101110m = , a karakterisztika 0k = .

Page 32: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

32

2. lépés: Következik a normalizálás. A mantisszát 2-11-el kell szorozni, így a karakterisztika 11 lesz. A mantissza normalizálás után 001110101001101110.0m = , a karakterisztika 11k = .A szám negatív, így a 2-1 helyi értéken levő bit (előjelbit) 1-es lesz. A mantissza 00111010100.10011011m = , a karakterisztika 11k = .

3. lépés: A karakterisztika 11. Ehhez hozzá kell adnunk 128-at, így kapjuk meg a karakterisztika tárolandó értékét.

139 169 134 017 18 04 02 01 10

A karakterisztika: 10001011

4. lépés: A logikai sorrend:

11011001

mantissza1

00010101

mantissza2

00110011

mantissza3

00110011

mantissza4

00110011

mantissza5

11010001

karakterisztika

A fizikai sorrend:

11011001

mantissza1

00010101

mantissza2

00110011

mantissza3

11010001

karakterisztika

00110011

mantissza5

00110011

mantissza4

Page 33: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

33

3. Feladat Mely valós szám memóriabeli alakja a következő?

01010001 00000000

00000000 00000000

10110000 10111111

Megoldás:Alkalmazzuk „visszafelé” a valós számok memóriabeli alakját előállító algoritmust! 1. lépés: Állítsuk elő bájtcserével a logikai sorrendet! A fizikai sorrend:

10111111

mantissza1

10110000

mantissza2

00000000

mantissza3

01010001

karakterisztika

00000000

mantissza5

00000000

mantissza4

A logikai sorrend:

10111111

mantissza1

10110000

mantissza2

00000000

mantissza3

00000000

mantissza4

00000000

mantissza5

01010001

karakterisztika 2. lépés: Határozzuk meg a karakterisztikát! A karakterisztika bináris alakja eltolt nullapontú kódot jelent. Eszerint kettes számrendszerben ábrázolt pozitív egész szám decimális alakját kell meghatározni, majd levonni belőle az eltolás mértékét, amely esetünkben 128. Tehát az eltolt karakterisztika: k’=21+23+27=2+8+128=138. A valódi karakterisztika: k=k’-128=10.

Page 34: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

34

3. lépés: Írjuk fel az ábrázolt szám valódi bináris alakját! Ehhez a normalizált mantisszát megszorozzuk a karakterisztikával azonos kitevőjű kettő-hatvánnyal. A mantissza 000011010.11111101m =

Ne felejtsük el a 2-1 helyi értéken levő bit jelentését! Itt 1-es áll, ami azt jelenti, hogy az ábrázolt szám negatív. Ha 0 lenne ez a bit, akkor jelentés szerint pozitív a szám, de az abszolút érték megállapításához természetesen 1-esként kell figyelembe venni, hiszen ezen a helyi értéken mindig 1-esnek kell állnia a normalizálás miatt. A normált mantissza 000011010.11111101m = , a karakterisztika 10k = .A szám abszolút értékének kettes számrendszerbeli alakja:

.0011011111110100X =

4. lépés: Számítsuk ki a szám tízes számrendszerbeli alakját! A szám abszolút értékének egész része: [ ]X =22+24+25+26+27+28+29=4+16+32+64+128+256+512=1012 A szám abszolút értékének törtrésze: { }X =2-3+2-4+2-6=1/8+1/16+1/64=0.203125

Tehát X =1012.203125

5. lépés: Mivel a mantissza előjelbitje 1 volt, így az ábrázolt szám: X=-1012.203125

4. Feladat Mely valós szám memóriabeli alakja a következő?

01011110 00000000

00000000 00000000

10011001 00100110

Page 35: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

35

Megoldás:

1. lépés: Állítsuk elő bájtcserével a logikai sorrendet! A fizikai sorrend:

00100110

mantissza1

10011001

mantissza2

00000000

mantissza3

01011110

karakterisztika

00000000

mantissza5

00000000

mantissza4

A logikai sorrend:

00100110

mantissza1

10011001

mantissza2

00000000

mantissza4

01011110

karakterisztika

00000000

mantissza5

00000000

mantissza3

2. lépés: Határozzuk meg a karakterisztikát! Az eltolt karakterisztika: k’=21+23+24+25+26=2+8+16+32+64=122. A valódi karakterisztika: k=k’-128=122-128=-6 3. lépés: Írjuk fel az ábrázolt szám valódi bináris alakját! A mantissza 100110010.01100100m = . A mantissza 2-1 helyi értékén levő bit 0. Ez azt jelenti, hogy az ábrázolt szám pozitív, de az abszolút érték kiszámításakor 1-es értékként kell figyelembe venni, hiszen normalizált esetben itt mindig 1-es áll. A normalizált mantissza 100110010.11100100m = , a karakterisztika 6k −=

A szám abszolút értékének kettes számrendszerbeli alakja: 100110010010010.00000011X =

Page 36: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

36

4. lépés: Számítsuk ki a szám tízes számrendszerbeli alakját! A szám abszolút értékének egész része 0, A szám törtrészének értéke: { }X =2-7+2-8+2-9+2-12+2-15+2-18+2-19+2-22=

1/128+1/256+1/512+1/4096+1/32768+1/262144+1/524288+1/4194300= =0.013952 5. lépés: A szám előjelbitje 0 volt, így az ábrázolt szám értéke: X=0.013952

5. Feladat Határozd meg az ábrázolható legkisebb pozitív valós szám memóriabeli alakját! Megoldás:Az X=m*2k alakú szám annál kisebb minél kisebb a mantissza és a karakterisztika értéke. Ezért megkíséreljük egymástól függetlenül a lehető legkisebbre csökkenteni őket. 1. lépés: Először a mantisszát minimalizáljuk. Az m a legkisebb, ha 1/2, hiszen normalizált alakban ábrázolunk. Ennek bináris alakja:

00000000

mantissza5

00000000

mantissza1

00000000

mantissza2

00000000

mantissza4

00000000

mantissza3

Itt az előjelbit 0, hiszen pozitív számról van szó. 2. lépés: Legkisebb a k, ha -128. Mivel a csupa 0 bit mantissza értéke 1/2, nincs 0 értékű mantissza. Így a 0 ábrázolása nem múlhat a mantisszán. Ezért a -128 értékű karakterisztika tetszőleges mantisszával definíció szerint jelenti a 0-át. Így a legkisebb használható karakterisztika a -127. Ezt eltolva 128-cal 1-et kapunk. Ezt átváltva kettes számrendszerbe kapjuk a karakterisztika bináris alakját: 00000001

Page 37: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

37

3. lépés: Következésképpen az ábrázolható legkisebb pozitív valós szám X=1/2*2-127. Ennek bináris alakja:

00000000

mantissza1

00000000

mantissza2

00000000

mantissza4

00000000

mantissza3

00000000

mantissza5

10000000

karakterisztika 4. lépés: Végül a fizikai sorrend a következő:

00000000

mantissza1

00000000

mantissza2

00000000

mantissza3

10000000

karakterisztika

00000000

mantissza5

00000000

mantissza4

Page 38: A számrendszerekrszucs/progalap/... · A számrendszerekr l általában 3 Érdekes kérdés, hogy az egyes számrendszerekben hány db számjegyünk van, és melyek ezek. A tízes

Valós típus

38

Gyakorlófeladatok

1. Határozd meg az alábbi valós számok memóriabeli alakját! -11.45; -121.1875; 1236.15; 13210.234; -13210.125; -360.0234; 1005.75; -100.35; 50.1275

2. Határozd meg a megfelelő valós számokat az alább látható memóriabeli alakjukból!

a)

11001101 0000000000000000 0000000000000000 00101111

b)

11000100 0000000000000000 0000000000100010 00101001

c)

11010101 0000000000000000 0000000000101010 00101111

d)

01011100 1001100110011001 1001100110010101 00101111

e)

01001101 0010001000100010 0010001010010101 00101111

3. Határozd meg az ábrázolható legnagyobb valós szám memóriabeli alakját! 4. Határozd meg az ábrázolható legkisebb valós szám memóriabeli alakját!

5. Határozd meg az ábrázolható legnagyobb negatív valós szám memóriabeli alakját!