Fixpontos számábrázolás
A fixpontos ábrázolási módoknál a törtpont (tizedesvessző, tizedespont, kettedespont stb.) helye rögzített. Többségében egész számok tárolására használják, így a törtpont az ábrázolt szám végén van. Az egy byte-on tárolt bináris számírásnak könnyen belátható korlátjai vannak. A számítógépen a fixpontos számokat általában két byte-on vagy négy byte-on ábrázolják, azaz egy szám hossza 16 vagy 32 bit. De a negatív számok ábrázolásáról is gondoskodnunk kell. Erre több lehetőség is kínálkozik.
Ábrázolás
[szerkesztés]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.
A két jellemző az alkalmazott regisztermérettől és a 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 a 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.
Előjelbit alkalmazása
[szerkesztés]A szám első bitje felhasználható előjelbitnek. Ennek az értéke azt jelzi, hogy a szám pozitív vagy negatív (a legelterjedtebb értelmezés szerint ha ez a bit 0, akkor a szám pozitív, ha 1, akkor negatív).
A kettes komplementerképzés módszere
[szerkesztés]Fontos szempont, hogy a műveletvégzés minél egyszerűbb legyen, ezért olyan formát célszerűbb választani, ahol a kivonás összeadással helyettesíthető. Ugyanis a szorzás összeadások sorozatára, az osztás pedig kivonások sorozatára vezethető vissza; ha tehát a kivonást sikerül összeadásra visszavezetni, akkor a gépnek tulajdonképpen csak az összeadás műveletét kell ismernie.
A számítógépek műveletvégzésénél a túlcsordulási jelenség kihasználásával vezethetjük vissza a kivonást az összeadásra. Ha a kivonni kívánt szám kettes komplementerét hozzáadjuk a kisebbítendőhöz, akkor a túlcsordulás miatt helyes különbséghez jutunk.
A kettes komplemens az egyes komplemensnél eggyel nagyobb szám, az egyes komplemens pedig egyszerűen a szám bitenkénti negáltja (amennyiben bináris számról van szó). Egy ábrázolt szám legmagasabb helyi értékű bitje akkor pontosan 1, ha a szám negatív volt (bár nem tárolunk előjelet, ez mégis olyan egyszerűen megállapítható, mint az előjeles ábrázolásnál). A negatív számot úgy kapjuk vissza, hogy a kettes komplemens képzését visszafelé hajtjuk végre, avagy ismét a kettes komplemensét képezzük.
Előnye, hogy a kivonást nem kell implementálni, ez egyszerűen negatív szám hozzáadását jelenti. A kettes komplemens előállítása közben túlcsordulás léphet fel, de ekkor a túlcsordult bittel nem foglalkozunk.
A kettes komplemens képzése a következő lépésekből áll.
- A szám minden egyesének helyére nullát, minden nullájának helyére egyest írunk, így megkapjuk a szám egyes komplementerét.
- A kapott egyes komplemenshez hozzáadunk egyet. Így megkapjuk a szám kettes komplemensét.
Magyarázat
Ha az ábrázolni kívánt szám pozitív volt, akkor semmiféle konverzióra nincs szükség, a normál bináris kódolás jó.
Ha az ábrázolni kívánt szám negatív, akkor kell végrehajtani a fent leírt műveletsort.
Pl. (4 biten ábrázolva [4 bit az értelmezési tartomány]):
(+6) = 0110
(-6) = 1010
Összeadás:
0110 + 1010 = 1 0000, azaz mivel alapból csak 4 biten ábrázoltunk, ezért a túlfolyás már kint van az értelmezési tartományból, a 0000 érték pedig pont 0.
A túlcsordulás (OVERFLOW) azt jelenti, hogy a műveleti eredmény nem fér el a változónak fenntartott tárterületen.
Feszített előjeles ábrázolás
[szerkesztés]Szokás eltolásos vagy alapértékes ábrázolásként is emlegetni. A negatív számokat is úgy tároljuk, mintha pozitívak lennének. Ezt úgy érjük el, hogy minden ábrázolni kívánt számhoz hozzáadunk egy előre rögzített c konstans értéket. A legkisebb ábrázolható szám −c lehet. Az összeadást elvégezve így mindenképp nemnegatív számot kapunk, melynek ábrázolása már ismertetésre került. Előnye, hogy ha lebegőpontos számításoknál így tároltuk el a kitevőt, az egyes számjegyek valódi helyi értékei könnyen kiszámíthatók. Az előjel megállapításához azonban vissza kell alakítani a számot.
Források
[szerkesztés]Informatika, 1. rész, Bonifert Zsolt, Műszaki Könyvkiadó, 2001