Content extract
A-19. A számítógépes adattárolás formái és szabványai (a numerikus és szöveges adatok tárolására vonatkozó legfontosabb formák és szabványok). A Neumann-elvű számítógépeknél mind a programokat, mind az adatokat ugyanabban a tárolóban helyezzük el és a tárolás jellege mindkét esetben ugyanaz. A tárolt jelsorozat értelmezésétől függ csak, hogy a tárolóhely tartalmát utasításnak vagy adatnak kell-e tekinteni. Egy utasítás mindig értelmezhető adatként, de ugyanez fordítva nem mindig tehető meg, mivel egy adatot képviselő jelsorozatnak nem mindig feleltethető meg érvényes utasítás, ugyanis lényegesen több jelkombináció képezhető az adott tárolóterületen, mint amennyit utasításként felhasználunk Fixpontos számábrázolás Ezt az ábrázolást a kisebb, kevesebb számjegyből álló számok írásához használják. A szám kettes számrendszerbeli együtthatóit kell elhelyezni a rendelkezésre álló véges (2 - 4 bájt)
hosszúságú rekeszbe. A tizedesvessző helyett ún. kettedes pont áll rendelkezésre, melynek a helye minden gépnél rögzített Ez lehet vagy a legnagyobb helyiértékű bit előtt, ebben az esetben mint törtszámot értelmezi a gép; vagy lehet a legalacsonyabb helyiértékű bit után, ez esetben egész számként értelmezi a gép. Formája: ± a.b (a pont baloldalán az egészrész számjegyei, jobb oldalán a törtrész számjegyei állnak) Lebegőpontos számábrázolás Hatványkitevős írásmód a nagy és a kis számok leírására. Ebben az esetben a szám három részből tevődik össze (ha nem érted, nézd meg ezt: http://babbage.csqcedu/courses/cs341/IEEE-754html): Előjel – egyetlen bit, melynek értéke 1, ha a szám negatív és 0, ha pozitív Exponens – a hatványkitevőt tartalmazza. Ennek mérete lehet: 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
Mantissza – a szám törtrészét tartalmazza. Ennek mérete lehet: 23 bit : egyszeres pontosságú számnál 52 bit : dupla pontosságú számnál 64 bit : bővített pontosságú számnál m * r^k m – mantissza, r – radixa, k - karakterisztika Mivel a számrendszer alapszáma (radixa – ez általában 2) rögzített, ezért ezt nem kell tárolni, elég csak a mantisszát és a karakterisztikát tárolni fixpontos tört (mantissza) illetve fixpontos egész (karakterisztika) számként. Az együttes felhasznált tárterület 4-6-8 byte IEEE 754 szabvány: A mantissza előjele 0 ha a szám pozitív és 1 ha negatív, a mantisszában levő fixpontos szám 1-re normalizáltan értendő, azaz 1. a formájú (binárisan-ezért az első egyest nem is tárolják), a szabvány a lebegőpontos műveletvégrehajtáshoz többfajta pontosságot definiál: egyszeres=32bit, dupla=64bit, kiterjesztett=80bit, négyszeres=128bit. ±a*2±p a- mantissza p- karakterisztika
pl: -654.187*107 Tízes számrendszer szerinti tárolás, BCD Ebben a kódrendszerben a tízes számrendszerbeli számok számjegyeit egyenként konvertáljuk át az alkalmazott bináris kódba. Mivel csak tízféle számjegyet használunk, ábrázolásukhoz elegendő 4 bit is Legáltalánosabban használt kód a BCD (Binary Coded Decimal, binárisan kódolt decimális) kód. Előjeles BCD szám az eddigi szabályok szerint nem képezhető, ezért a BCD számok előjelének jelzésére speciális, úgynevezett vezérlőszó szükséges. Ezt a formátumot főleg arra használjuk, hogy a kereskedelmi alkalmazásokban előforduló nagyon nagy számokat ábrázoljuk, mivel lehetővé teszi a műveletek végzését a hibák elkerülése nélkül. Normalizált A számok normálalakban való ábrázolása. A számokat olyan lebegőpontos alakra hozzuk, amelyben az egész rész 0 értékű (nullára normalizált alak), vagy csak az egyeseknek megfelelő helyiértéken található 1 és 9
közti számjegy (egyesre normalizált alak) Műveletek problémái: A műveletek elvégzése során az egyik hibajelenség az, hogy az eredmény túl nagy (owerflow = túlcsordulás), vagy túl kicsi (underflow = alulcsordulás) ahhoz, hogy a rendelkezésre álló tárolóban megjeleníthessük, ilyenkor általában adatvesztés lép fel. A másik hibajelenség az, hogy az eredmény nem tartozik az operandusok halmazába (pl. egész számokkal végzett művelet eredménye nem mindig egész szám). A harmadik probléma a pontatlansági tényező, mikor is a művelet eredménye a tárolási mód miatt torzul. A csak számjegyekből álló karaktersorozatokat numerikusnak, a csak betűkből állókat alfabetikusnak, a mindkét fajtát tartalmazó karaktersorozatot pedig alfanumerikusnak nevezzük. Alfanumerikus adatok tárolása Ha az adatokkal nem kívánunk aritmetikai műveleteket végezni, a numerikus adatok kódolására használt módszerek nem alkalmasak a nagy
tömegű adatok kezelésére. Alfanumerikus (betű, számjegy, speciális jelek) adatok tárolására az ASCII (American Standard Code for Information Interchange), illetve az IBM nagygépeknél használt EBCDIC (Extended Binary Coded Decimal Interchange Code) kódrendszert használják. Ehhez szükséges karakterek: 26 kis- és 26 nagybetű, kb. 25 speciális jel és 10 decimális szám (0-9) (összesen 87 karakter) Ennek ábrázolásához 7 bináris digit szükséges. Az ASCII kódolást a gyakorlatban kódtáblázatok segítségével hajtjuk végre. Az ASCII kódnál egy jelkombináció 8 bitből áll: 7 bit + 1 paritás bit. A számítógépek elterjedésével igény keletkezett a kódtáblázat olyan kiegészítésére, mely a speciális nemzeti karakterek (pl. ékezetes karakterek) kódolását is lehetővé teszi. Magyarországon az IBM által ajánlott, ún 852-es kódlapot szabványosították. Egyéb adattárolási módok Az eddig ismertetett formák jellemzője, hogy
magából a tárolt jelsorozatból nem lehet következtetni annak tartalmára, azaz, arra, hogy milyen típusú adatot képvisel. Mivel ez nem mindig előnyös, alkalmaznak olyan tárolási formákat is, amelyek az adatot képviselő bitek mellett további kiegészítő részeket is tárolnak az adat típusának a jelölésére. Ezt a formát nevezik öndefiniáló adatformának (pl. Motorola, SPARC CPU-knál)