Lebegőpontos számábrázolás
LEBEGŐPONTOS SZÁMÁBRÁZOLÁS A fixpontos operandusoknak azt a hátrányát, hogy az ábrázolás adott hossza miatt csak korlátozott nagyságú és csak egész számok ábrázolhatók, a lebegőpontos számábrázolás küszöböli ki. Lebegőpontos ábrázolással a számtartomány lényegesen megnő és tört szám is ábrázolható. Ezért elsősorban műszaki-tudományos számításoknál használják.
Matematikai-, gépi normál alak: Legyen a szám: 4253,56 tízes számrendszerben. (a számrendszer alapszámát radix-nak nevezzük) Tízesre normalizálás esetén: Matematikai normál alakja: Gépi normál alak:
4253,56 =4,25356 * 103 4253,56 =0,425356 * 104
Általánosan: -
’A’ ’X’ ’B’ 16) ’y’
, ahol
az eredeti szám az együttható, ennek törtrésze a mantissza (piros) a hatvány alapja ( a számrendszer alapszáma, általában 2, 8, 10, a hatvány kitevője, az un. ’karakterisztika’ (zöld)
Matematikai normál alaknál (10-es számrendszerben): 0<=X<10 B=10 Gépi normál alaknál ((10-es számrendszerben): 0<=X<1 B=10 A gépi alakban előnyös a 0 egészes kezdés, mert így nem kell ábrázolni a szám egész részét! Kettesre normalizálás: Legyen a tízes számrendszerbeli szám: - 91,125(10 1. Először a tízes számrendszerbeli számot átváltjuk kettes számrendszerbe. -1011011,001(2=1*26+1*24+1*23+1*2+1+1*2-3=91,125(10 91 45 22 11 5 2 1
0
:2 1 1 0 1 1 0 1
0, 0 0 1
125 250 500
*2
Addig osztunk, míg a hányados 0 nem lesz! 1
Lebegőpontos számábrázolás
Számrendszerek 2 000 001 010 011 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000
8 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20
10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
16 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
Mint látható egy 8-as számrendszerbeli szám ábrázolására 3 bit kell (triád) Mint látható egy 16-os számrendszerbeli szám ábrázolására 4 bit kell (tetrád) Így például: (ha kell elől feltöltjük értéktelen nullákkal) 001101010111(2 = 855(10 triádokat hozunk létre a bináris vessző mindkét oldalán, és az oktális (8-as) alak leolvasható. 0
0 1 1 0 1 0 1 0 1 1 1 1+4=5 1+2+4=7 1 2 3 2 1101010111(2 = 1527(8=1*8 +5*8 +2*8+7=512+320+16+7=855(10 0
0 1 1 0 1 0 1+2=3 1+4=5 1101010111(2 = 357(16 =3*162+5*16+7=855(10
1
0
1 1 1+2+4=7
1
2. A számot normalizáljuk a megfelelő számrendszerben gépi normál alakra! A 855(10=0,855(10*103 gépi normál alakja: Kettesre normalizálva: Nyolcasra normalizálva: Tizenhatosra normalizálva:
1101010111(2 1527(8 357(16
= 0,1101010111(2*210 = 0,1527(8*84 = 0,357(16*163
2
Lebegőpontos számábrázolás
3. Ábrázoljuk a 855(10 számot 2-re normalizálva 32 biten (gépi szó) lebegőpontosan! A karakterisztikát (+10)-t 7 pozíción feszített előjelesen ábrázoljuk. 1 1 1 0 0
0 0 0 1 1
0 0 0 1 1
0 0 0 1 1
0 0 0 1 1
1 0 0 1 1
+2 kitevő +1 kitevő alapérték a 0 kitevőnek felel meg -1 kitevő -2 kitevő
0 1 0 1 0
Tehát az 1000000-hoz vagy hozzáadjuk a kitevő 2-es számrendszerbeli alakját, vagy kivonjuk. Jelen esetben: a 10 alakja 2+8=1010(2 és ezt kell hozzáadni az 1 000 000-hoz.
+
1
0
0
1
0
0
0 1 1
0 0 0
0 1 1
+ 0,1101010111(2*2
0 0 0
+10
A lebegőpontos ábrázolási forma: +/- 0/1
karakterisztika
mantissza (szám törtrésze)
A mantissza (szám) előjele 1 pozíció
előjeles kitevő ábrázolása 7 pozíció
24 pozíció a bináris/hexadecimális vessző képzeletbeli helye összesen 32 pozíció (egy gépi szó)
0
1001010
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A végeredményt 16-os számrendszerben szokták megadni. 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 A D 5 C 0 0 0
4. Ábrázoljuk a 855(10 számot 2-re normalizálva 32 biten (gépi szó) lebegőpontosan! A válasz a feladatra: a megoldás 4AD5C000(16
3
Lebegőpontos számábrázolás
Feladat: Ábrázoljuk a következő gépi normál alakra hozott számot!
- 0,1101010111(2*2
+10
A lebegőpontos ábrázolási forma: +/- 0/1
karakterisztika
mantissza (szám törtrésze)
A mantissza (szám) előjele 1 pozíció
előjeles kitevő ábrázolása 7 pozíció
24 pozíció a bináris/hexadecimális vessző képzeletbeli helye összesen 32 pozíció (egy gépi szó)
1
1001010
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A végeredményt 16-os számrendszerben szokták megadni. 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C A D 5 C 0 0 0
A válasz a feladatra: a megoldás CAD5C000(16
Feladat: Ábrázoljuk a következő gépi normál alakra hozott számot!
+ 0,1101010111(2*2 1
0
0
0 1 A lebegőpontos ábrázolási forma:
0 1 0
1
0 0 1
-10
0 1 1
+/- 0/1
karakterisztika
mantissza (szám törtrésze)
A mantissza (szám) előjele 1 pozíció
előjeles kitevő ábrázolása 7 pozíció
24 pozíció
0 0 0
a bináris/hexadecimális vessző képzeletbeli helye összesen 32 pozíció (egy gépi szó)
0
0110110
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A végeredményt 16-os számrendszerben szokták megadni. 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 D 5 C 0 0 0
A válasz a feladatra: a megoldás 36D5C000(16 4
Lebegőpontos számábrázolás
Feladat: Ábrázoljuk a következő gépi normál alakra hozott számot!
- 0,1101010111(2*2 1
0
0
0 1 A lebegőpontos ábrázolási forma:
0 1 0
1
0 0 1
-10 0 1 1
+/- 0/1
karakterisztika
mantissza (szám törtrésze)
A mantissza (szám) előjele 1 pozíció
előjeles kitevő ábrázolása 7 pozíció
24 pozíció
0 0 0
a bináris/hexadecimális vessző képzeletbeli helye összesen 32 pozíció (egy gépi szó)
1
0110110
1
1
0
1
0
1
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
A végeredményt 16-os számrendszerben szokták megadni. 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 6 D 5 C 0 0 0
A válasz a feladatra: a megoldás B6D5C000(16 Ha 64 biten (dupla szó) vagy félszón (16 bit) kell ábrázolni, akkor a megoldás teljesen ez csak a hexadecimális alak duplájára, ill. felére csökken. Abban az esetben, ha nem 2-re normalizálva, hanem 16-ra normalizálva kell ábrázolni akkor teljesen hasonló a megoldás, csak a 16-ra normalizált alakkal kell dolgozni! Ha valakinek kérdése van, nagyon szívesen válaszolok e-mailben.
5
Lebegőpontos számábrázolás
6