Számábrázolás és számrendszerek

Talán senki sem lepődik meg azon, hogy a számítógépek számokkal dolgoznak. A számoláshoz azonban szükség van számábrázolási formákra, hogy a rendszerek teljesen egységesek legyenek.

Mindegyik számítógép bináris számábrázolást használ; ez a kettes számrendszert jelenti, ami a 0 és az 1 számjegyekből áll. A bináris forma azért előnyös, mert így csak két állapotot kell megkülönböztetni a fizikai hardver szintjén, ami könnyen kivitelezhető: nagyon leegyszerűsítve úgy, hogy vagy "folyik áram a vezetékben", vagy "nem folyik áram a vezetékben". Ez azonban a szoftverek szintjén már nem kedvező, ezért a kettes számrendszer mellett az informatika nyolcas, tízes és tizenhatos számrendszert is használ. Természetesen van még több számrendszer is, de a számítógépek ettől a négytől jellemzően nem térnek el.

Hirdetés

A kettes számrendszeren kívül a legáltalánosabb a tízes, azaz a decimális számrendszer, ami a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 számjegyekből áll. Ez mindenkinek ismerős lehet, hiszen az emberek (tisztelet a kivételnek) ebben a számrendszerben számolnak. A nyolcas, vagyis az oktális számrendszerben a 0, 1, 2, 3, 4, 5, 6 és 7 számjegyek léteznek, míg a tizenhatos, tehát a hexadecimális számrendszer a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 számjegyeket kiegészíti az A, B, C, D, E és F betűkkel. A számolás mindegyik számrendszerben ugyanazon logika alapján zajlik, de nyilván a decimális számrendszerhez szokott ember a többit nehezebben érti.

Amiért a számrendszerekről ezt a rövid áttekintést leírtuk, az azért van, mert a hardver mindig bináris számrendszerben számol, ami a számolás logikája alapján nem gond, viszont a számábrázolás problémáját meg kell oldani. Nem szabad ugyanis elfelejteni, hogy a matematika megkülönböztet különböző számhalmazokat. A fő problémát a racionális és az irracionális számok halmaza jelenti, melyen belül előfordulhatnak végtelen tizedes törtek is (a hardver működése szempontjából mindegy, hogy ezek szakaszosak vagy nem szakaszosak).

Szükséges tehát számábrázolási formák kialakítása, melyek révén megfelelően kezelhetők a hardveren a számítások.

A fixpontos számábrázolási módoknál az egészrészt a törtrésztől elválasztó törtpont helye fix. Zömében (de nem kizárólag) egész számokkal való műveletvégzésre való. Pontossága sok dologtól függ, illetve az ábrázolási intervallum is eltérő, hiszen az egy bájton, azaz nyolc biten tárolt adat komoly korlátokat jelent. Éppen ezért jellemzően a 16 és 32 bites ábrázolás jobb megoldás, vagyis kettő és négy bájton érdemes tárolni a számot.

A lebegőpontos számábrázolási módok jóval pontosabb eredményt adhatnak, de problémásabbak is. Az egész célja a valós számok kezelése véges ábrázolási intervallum mellett. Könnyen kitalálható, hogy a végtelen tizedes törteknél ez gyakorlatilag lehetetlen feladat, de kellően széles skálát lefedve az eredmény meglehetősen pontos lehet. A lebegőpontos számábrázolás alapja, hogy a valós számok a tízes számrendszerben normalizált alak formájában is leírhatók, ez a szám normálalakja. Ehhez a tizedesvesszőt kell eltolni (innen ered a lebegőpontos kifejezés) úgy, hogy a számjegyek a tizedesvesszőtől jobbra helyezkedjenek el, és a tizedesvessző utáni első számjegy sosem lehet nulla. Ezután az eltolás mértékével kalkulálva, a tíz megfelelő hatványával fel kell szorozni az így kapott számot. Egy egyszerű példával élve a normalizált alak ezt jelenti:

223,76 = 0,22376 * 10³ (az eredeti szám normalizált alakban)

A lebegőpontos számábrázolás jellemzően 32 bites intervallumon történik, de nem biztos, hogy ez elég, így bejön a képbe a dupla pontosság, vagyis a 64 bites intervallum. Természetesen számos ábrázolási megoldás létezik a lebegőpontos számokra, melyeket szabványként érdemes kezelni, hiszen a különböző számábrázolási rendszerek eltérő eredményt adhatnak. A legelterjedtebb szabvány az IEEE 754, melynek legutóbbi, IEEE 754-2008-as verzióját 2008 augusztusában fogadták el, és azóta zömében erre építenek a hardverek lebegőpontos végrehajtói.

Hirdetés