Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!
Gépi számok ábrázolása/kiszámítása segítség!!
mightymatek
kérdése
438
A 0.5-öt hogyan kell átváltani gép számmá? A halmaz: M = M(6, −5, 5), A végeredmény pedig. M[110011|-4]. Miért -4 lett a karakterisztika? Egyáltalán hogy jött ki az 110011 sorozat? Nekem teljesen más jött ki. És miben változik a kiszámítási módszer, ha nem 1 és 0 közötti számot ábrázolunk? Valaki le tudná nekem vezetni részletesen?
Nagyon szépen köszönöm előre is!!
Jelenleg 1 felhasználó nézi ezt a kérdést.
Gép, bináris, számrendszer
0
Felsőoktatás / Informatika
Válaszok
1
AlBundy{ Polihisztor }
válasza
Azért megadhattad volna, hogy milyen jelöléseket használsz, mert semmiképp nem standard IEEE 754 lebegőpontos ábrázolásról van szó... Mindenesetre némi kereséssel rájöttem, hogy az ELTE Numerikus módszerek tárgyában használják ezt a jelölést, és azt jelenti, hogy a mantissza 6 bites, a karakterisztika pedig -5 és 5 között lehet.
Az okozza a zavart, hogy a megadott megoldás nem a 0,5 ábrázolása, hanem a 0,05-é. Nézzük, hogyan jön ki.
Írjuk át a decimális 0,05 számot fixpontos bináris formátumba. Most csak törtrész van, tehát azt csináljuk, hogy 2-vel szorozgatjuk a számot. és mindig leírjuk az átvitelt. Ez sosem fog véget érni (a 0,05 bináris alakja végtelen szakaszos kettedes tört), nekünk addig kell csinálnunk, amíg 6 hasznos bitet nem kapunk. Hasznos bitek alatt azt értem, hogy a vezető nullákat fölösleges tárolni.
Tehát a `0.05` kerekített bináris fixpontos ábrázolása `0.0000110011`. A négy vezető nullát nem tároljuk, hanem a karakterisztika segítségével eltoljuk (`2^-4`-nel szorozzuk) a számot, ezért lesz a karakterisztika `-4`. Vagyis a szám 16-szorosát, azaz a `0.110011` értéket tároljuk a mantisszában.
Még azt kell megmagyaráznom, hogy miért csináltam a szükségesnél látszólag egy lépéssel tovább a szorozgatást (a 6 hasznos bit helyett 7-et számoltam ki). Ez azért volt szükséges, hogy helyesen tudjak kerekíteni. Ugyanis ha a 7. hasznos bit nem 0, hanem 1 lett volna, akkor a mantissza legalsó bitjéhez hozzá kellett volna adnom egyet (tehát ez esetben `110011` helyett `110100` lett volna a kerekített mantissza).