Fixpontos, lebegőpontos 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 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.