220 likes | 369 Views
Számábrázolás. Fixpontos, lebegőpontos. Fixpontos ábrázolás. A fixpontos számábrázolás lényege, hogy a szám kettes számrendszerbeli számjegyeit egy rögzített nagyságú memóriaterületen tároljuk, a szám helyi értékeinek megfelelően. Ez leggyakrabban: 1 bájt méretű
E N D
Számábrázolás Fixpontos, lebegőpontos
Fixpontos ábrázolás • A fixpontos számábrázolás lényege, hogy a szám kettes számrendszerbeli számjegyeit egy rögzített nagyságú memóriaterületen tároljuk, a szám helyi értékeinek megfelelően. • Ez leggyakrabban: • 1 bájt méretű • 2 bájt méretű szó melyet WORD-nek nevezünk • 3 bájt méretű szó melyet DWORD-nek nevezünk
Fixpontos ábrázolás • Meghatározott továbbá az is,hogy hol helyezkedik el a szám egész és törtrészét elválasztó jel a tizedesvessző. • Minden számítógépnél a tizedespontnak rögzített helye van és a gép a tárolt bitsorozatot ennek megfelelően értelmezi. • Egy bájt esetén a számok tartománya 0-tól 255-ig terjed. • A 8 bites adatok kezelhetők párban is, egy 16 bitből álló fixpontos szám ként.
Fixpontos ábrázolás • A fixpontos számokkal a 2-es számrendszerben műveleteket tudunk végezni. • Például összeadhatunk két 16 bites számot. • Kivonást a következő féleképpen végezhetjük el: • a kivonandó 2-es komplemensét hozzáadjuk a kisebbítendőhöz • persze ehhez tudni kell azt hogy mi az a komplemens.
Kettes komplemens • Egy szám kettes komplemensét úgy képezzük, hogy a pozitív számot bitenként invertáljuk, majd hozzáadunk egyet. • Például ábrázoljuk a -22 számot kettes komplemens kódban nyolc biten:
Fixpontos ábrázolás • Ebben a ábrázolási módban a bináris pont helye - ami a bal oldalon található egészeket elválasztja a jobb oldalon lévő törtektől - rögzített, és a számokat többnyire kettes komplemens kódban ábrázolják. • A számok ábrázolásának két fontos jellemzője van a felhasználás szempontjából: • az ábrázolandó számok nagysága • az ábrázolás pontossága
Fixpontos ábrázolás • A két jellemző az alkalmazott regisztermérettől és bináris pont helyétől függ. Ha a bináris pontot balra toljuk el, akkor • a számok ábrázolási tartománya csökken • az ábrázolás pontossága nő • ha bináris pont a regiszter bal szélén van, akkor a szám fixpontos tört. • Ha pedig a bináris pont jobbra mozdul, akkor • a számok ábrázolási tartománya nő • az ábrázolás pontossága csökken • ha a bináris pont a regiszter jobb szélén van, akkor a szám fixpontos egész.
Fixpontos ábrázolás • Ábrázoljuk például az N = -12,7510 számot egy 32 bites regiszterben, ahol a törtek számára 11 bit van fenntartva. A negatív számokat kettes komplemens kódban tárolják. A számot először kettes számrendszerbe alakítjuk át: -12,7510 = 1100,0112
Ezután ábrázoljuk a pozitív számot, majd vesszük a kettes komplemensét. • Az adott formátumban ábrázolt N számot hexadecimálisan is leolvashatjuk. (Vigyázat, ez nem azonos az N hexadecimális értékével!) N: FFFF9A0016
Lebegőpontos ábrázolás • Általános formája: f2e • Az f egy bináris tört, a mantissza vagy más néven törtrész, az e pedig a kettő hatványkitevője, exponense. • Három mező alkot tehát egy lebegőpontos számot: • Előjel • Exponens • Mantissza
Lebegőpontos ábrázolás • Mikor egy lebegőpontos számot ábrázolunk számítógépen akkor 2 fixpontos számot, a mantisszát, és az exponenst kell együtt kezelnünk. • A lebegőpontos számok pontos tárolási formáját pontosságuk határozza meg. Leggyakrabban az egyszeres, dupla és bővített pontosságú lebegőpontos számokat használjuk.
Lebegőpontos ábrázolás • Az előjel mező egyetlen bit. Értéke 1,ha a lebegőpontos szám negatív és 0 ,ha pozitív. • Az exponens mező a hatványkitevőt tartalmazza, ennek mérete: • 8 bit egyszeres pontosságú számnál • 11 bit dupla pontosságú számnál • 15 bit bővített pontosságú számnál
Lebegőpontos ábrázolás • A mantissza tartalmazza a szám törtrészét. • Ennek értéke lehet: • Egyszeres pontosságú számnál 23 bit, • Dupla pontosságú számnál 52 bit, • Bővített pontosságú számnál 64 bit a mérete.
Lebegőpontos ábrázolás • A számokat ebben az esetben normalizált alakban használjuk. • ahol N2 az ábrázolandó bináris szám M normalizált mantissza E karakterisztika • A mantisszát leggyakrabban előjeles abszolút értékes formátumban tárolják. • A normalizálásra kétféle gyakorlat terjed el.
Törtre normalizálás • A bináris pontot addig toljuk el, amíg a mantissza értéke 1/2 és 1 közötti értékű nem lesz. Például: N2 = 0,00010110012 = 0,1011001˙2-3 • Mivel a 2-1 helyértéken lévő bit mindig 1 értékű, ezért a szám eltárolása előtt kiveszik. Ezt implicitbitnek hívják. Így a tárolt mantissza (m) értéke: m: 011001000..
Egészre normalizálás • Ez esetben a normalizált mantissza értéke 1 és 2 közé esik. Például: N2 = 0,00010110012 = 1,011001˙2-4 • Itt az egészek helyén áll mindig 1, ezért tárolása szükségtelen. A tárolt mantissza azonos az előzővel: m: 011001000.. • Természetesen műveletvégzés előtt mindkét esetben a nem tárolt biteket vissza kell helyezni, hiszen ellenkező esetben hibás eredményt kapnánk.
A karakterisztikához egy egész számot adnak hozzá, és így tárolják. Ezt a megoldást eltolt vagy ofszet karakterisztikának hívják. Az eltolásra azért van szükség, hogy a karakterisztikát eltoljuk a pozitív számok tartományába, és így nem kell az előjelét ábrázolni. Az eltolás mértékére (d) két megoldás használatos: • d = 2k-1 - 1 d = 2k-1 • ahol k a karakterisztika ábrázolására szánt bitek száma. Így az eltolt karakterisztikát (c) a • c = E + d • összefüggéssel számíthatjuk ki.
Például legyen egy szám karakterisztikája 4, amit nyolc biten ábrázolunk, és használjuk a d = 2k-1 eltolást: • A lebegőpontos számok ábrázolásának egységesítésére született az ANSI/IEEE 754 szabvány, amellyet a nagy processzorgyártók (INTEL, MOTOROLA, stb.) is használnak. Ez a szabvány háromféle lebegőpontos formát ír elő: • szimpla pontosság 32 bit • dupla pontosság 64 bit • belső pontosság 80 bit
s a mantissza előjele • c eltolt karakterisztika (d = 2k-1 - 1) • m előjeles abszolút értékes, egészre normalizált mantissza • A fenti jelöléseket használva egy lebegőpontos szám értéke a következő képlettel számítható ki: • N = (-1)s˙(1,m)˙2c-d
Példa • ábrázoljuk az N = -12,7510 számot szimpla pontosságú formátumban! Először átalakítjuk kettes számrendszerbe, majd egészre normalizáljuk: N = -12,7510 = -1100,112 = -1,10011˙23 • Mivel az N előjele negatív, ezért s = 1. A normalizált mantisszából elveszünk az egészek helyén álló egyest, és nullákkal egészítjük ki az alacsonyabb helyértéken, tehát az ábrázolt mantissza: m: 10011000.. • Mivel a karakterisztikát 8 biten ábrázoljuk, ezért d = 12710 = 111111112. A karakterisztikához hozzáadjuk az eltolást:
A kiszámított s, c és m értékeket behelyettesíthetjük az adott formátumba: • Az ábrázolt számot hexadecimálisan leolvasva: N: C14C000016 • Természetesen ez nem azonos az N szám tizenhatos számrendszerbeli értékével, ezért nem használtunk egyenlőségjelet.