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.

  1. 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.
  2. 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

Kapcsolódó szócikkek

[szerkesztés]

Lebegőpontos számábrázolás