Lebegőpontos számábrázolás, Karakterisztika?
Valaki el tudná magyarázni hogy 22,43 karakterisztikájára hogy jön ki a: 1 0 0 0 0 0 1 1
És úgy általánosságban(egyszerűen, egyszerű számokkal) hogy határozzuk meg a karakterisztikát?
Nem tudom miféle bináris ábrázolás ez, de a lebegőpontos ábrázolásához köze nincs az én meglátásomban :D
Eleve a lebegőpontos ábrázoláshoz kell mantissza, és karakterisztika, illetve szokott lenni egy előjelbit. Az előjelbit szokott a szám első bitje lenni, az határozza meg, pozitív, vagy negatív számról beszélünk. A mantissza és a karakterisztika már érdekesebb. Hogy melyiket hogy definiáljuk, az nem kifejezetten egységes, a gépi számokat (ami lényegében a lebegőpontos számok egyik ábrázolásmódja) így ábrázoljuk:
A mantissza (M) egy bináris ábrázolás, ahol az első bit 1/2-et, az azután következők pedig az előző érték felét reprezentálják, tehát az első bit 2^(-1), az azutáni 2^(-2) és így tovább. A mantisszának meghatározott hossza van, ami a szám pontosságát határozza meg. Minél hosszabb, annál pontosabban tudjuk reprezentálni a számot. A karakterisztika (k) pedig azt határozza meg, hogy ezt a mantisszát kettő hanyadik hatványával toljuk el. A karakterisztikára is meghatározunk egy intervallumot, amit felvehet értékül. Az, hogy a karakterisztika milyen nagy (vagy kis) értéket vehet fel a szám minimális, illetve maximális nagyságrendjét határozza meg. Fontos megjegyezni, hogy mivel a mantissza hossza fix, így a szám pontossága véges, tehát nem tudunk minden számot tökéletes pontossággal felírni. Ezesetben lesz két olyan lebegőpontos számunk, ami alulról, illetve felülről a legközelebbi lesz a pontos számhoz.
A gépi szám tehát úgy adódik, hogy M*2^k. A gépi számok ezen megvalósításában nincs előjelbit. Például 22,43 felírható így:
A mantissza legyen 8 bit hosszú, ez esetben a mantissza 1011 0011. A mantissza meghatározásának egyik egyszerű (középiskolában is használt) módja a kettővel való leosztogatás. Az egész részt (22) addig osztjuk kettővel maradékosan, amíg 0 nem marad, és minden egyes osztásnál megnézzük, van-e maradék. Ha van, akkor 1-et írunk, ha nincs 0-t. Így kijön, hogy 01101. Ezt megfordítva kapjuk az egészrész bináris alakját (10110). A törtrésznél pedig fordítunk a dolgon, kettővel való osztás helyett kettővel szorzunk, és ha a szorzat nagyobb, mint 1, akkor 1-est írunk, különben 0-t. Itt nem fordítjuk meg a végén az eredményt. A szorzásnál mindig csak a törtrésszel dolgozunk tovább. Pl.
0,43 * 2 = 0,86 (0)
0,86 * 2 = 1,72 (1)
0,72 * 2 = 1,44 (1)
0,44 * 2 = 0,88 (0)
És még folytatható a végtelenségig, de mivel nekünk 8 bites mantisszánk van, és az egész rész 5 bit hosszú, így csak az első 3 bitet vesszük innen. Így kapjuk azt a mantisszát, hogy [1011 0011]. A karakterisztika meghatározásához csupán meg kell nézni, hogy a 2-nek melyik a legkisebb hatványa, ami már nagyobb az eredeeti számnál. Jelen esetben 32 > 22,43 > 16. 32 = 2^5, így a karakterisztikánk 5 lesz. Az így kapott gépi számot [1011 0011|5] -el jelöljük. Ha kiszámoljuk az így kapott számot, azt kapjuk, hogy [1011 0011] * 2^5 = 10110,011. Ez decimálisba átváltva 22,375. Ezesetben a konkrét számtól vett különbség 0,055. Mivel ez kisebb az eredeti számnál, nézzük a következő gépi szám milyen értéket fog képezni.
[1011 0011|5] után következő szám a [1011 0100|5], ez eltolva a karakterisztikával 10110,100 lesz, azaz 22,5. Ez esetben a hiba 0,07. Mivel a [1011 0011|5] csak 0,055-re volt az eredeti számtól, az a közelebbi gépi szám. Szóval a 22,43-hoz tartozó gépi szám, 8 bites mantissza esetén az [10110011|5] lesz.
Bár a gyakorlatban használt lebegőpontos számábrázolás némiképp eltér ettől a gépi számos megvalósítástól (előjelbit használata, a mantissza első bitjének elhagyása, lévén az kötelezően 1-es kell legyen, a mantissza első bitje nem 2^(-1) hanem 2^0 értéket jelöl, stb), de a lényeg, különösen a kérdezett karakterisztika szerepe ebből is átjön, szerintem.
# 2/2 ma 00:00
Pardon. Éjjel már nem számoltam utána.
Meg fogalmazhattam volna pontosabban.
Nem kell ez a hosszú szöveg
A karakterisztika függvénye az a k', melynek az értéke előre meg van határozva, ez 128
Úgy számolod ki, hogy a mantissza összes számjegyét hozzáadod a 128-hoz, átváltod 2-es számrendszerbe, ez a szám karakterisztikája
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!