Floating point - prevody

David
Matfyz(ák|ačka) level II
Příspěvky: 80
Registrován: 7. 11. 2004 18:57
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Floating point - prevody

Příspěvek od David »

Ahoj,

mam nekolik nejasnosti ohledne prevodu cisel s plovouci desetinnou carkou.
Neporadil byste mi s tim prosim nekdo?

1. Zapiste dekadicke cislo 0,115 v zaznamu pro plovouci radovou carku ve dvojkove soustave. Vysledek normalizujte a zapiste tak, jak by se jevil v pameti pocitace, pokud by norma IEEE-754 pripoustela nasledujici parametry: exponent s posunem o 63, mantisa 8 bitu.

Tohle snad celkem vim, jen nevim co presne ma znamenat exponent s posunem o 63, mantisa 8 bitu
Muj navrh reseni:

Kód: Vybrat vše

1. prevadim do dvojkove soustavy
0.115 *2 = 0.23 ... 0
0.23 * 2 = 0.46 ... 0
0.46 * 2 = 0.92 ... 0
0.92 * 2 = 1.84 ... 1
0.84 * 2 = 1.68 ... 1
                ... 1
                ... 0
                ... 1
                ... 0
                ... 1
                ... 1
                ... 1
                ... 0
atd..

takze mam 0.000111010111
to znormalizuji: 1.11010111 * 2^-4
Kdyz mam na mantisu 8 bitu, tak to znamena, ze za desetinnou teckou muzu mit 8 pozic? (predpokladam, ze pred des. teckou je 1, takze si ji nemusim pamatovat)
Co znamena ten posun exponentu 63?


2. Tohle zadani uz fakt nevim:
Zapište číslo 0.4645 ve tvaru s plovoucí desetinou čárkou. Zapište binárně exponent s decimálním základem. Zvolte vhodný tvar mantisy a zapište výsledek binárně.

Co se tam ma vlastne delat? To jako znormalizovat to v desitkovem zakladu:
4.645 * 10^-1
a pak jen prevest 4.645 do dvojkove soustavy a 10 do dvojkove soustavy??

Diky moc
Xerxes
Matfyz(ák|ačka) level I
Příspěvky: 37
Registrován: 23. 1. 2007 16:32
Typ studia: Informatika Bc.
Bydliště: Zlínský kraj / Kolej 17. listopadu
Kontaktovat uživatele:

Příspěvek od Xerxes »

Mantisa 8 bitů znamená, že na její uložení máš prostor 8 bitů. Norma IEEE používá skrytý bit, takže svoji mantisu 1.11010111 uložíš jako osm bitů, takže 1101 0111 bez té jedničky před řádovou čárkou. Takže si to myslíš správně.

Posun exponentu o 63 je způsob, jakým se dají zakódovat i záporné exponenty. V podstatě jde o to, že k reálnému exponentu přičteš 63 a uložíš výsledné číslo, ve tvém případě 59, protože ti vyšel exponent -4 a 63 - 4 = 59.

Co zadání neuvádí, je počet bitů exponentu, takže si ho vymyslím, třeba osm. Potom by teda řešení vypadalo asi takto: 0 00111011 11010111.
To první je znaménkový bit, následuje osmibitový exponent 59 (čili -4) a osmibitová mantisa.

K druhému příkladu. Normalizace požaduje mantisu v takovém tvaru, aby byla menší než jedna, ale první číslice za řádovou čárkou byla nenulová. Takže číslo 0.4645 je již normalizované. U dvojkového základu to bylo jiné, protože tam se používá skrytý bit.

Decimální základ říká, číslo v exponentu bude vyjadřovat mocninu deseti. Vhodný tvar mantisy je BCD, protože máme desítkový základ. Takže exponent (v našem případě nulový) zakóduješ binárně, mantisu taky binárně, ale v BCD. Ještě tam možná chybí zase nějaký posun exponentu, aby mohl kódovat i záporná čísla. Bez posunu by to vypadalo asi takto nějak (znaménko, 8 bitů exponent, 4 číslice BCD mantisa):

0 00000000 0100 0110 0100 0101

Snad jsem trochu pomohl... ale je to bez záruky.
David
Matfyz(ák|ačka) level II
Příspěvky: 80
Registrován: 7. 11. 2004 18:57
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od David »

Dik, moc jsi mi pomohl. Uz je mi to snad jasne.

Akorat:
K druhému příkladu. Normalizace požaduje mantisu v takovém tvaru, aby byla menší než jedna, ale první číslice za řádovou čárkou byla nenulová. Takže číslo 0.4645 je již normalizované. U dvojkového základu to bylo jiné, protože tam se používá skrytý bit.
s tou normlizaci bych rekl, ze jsem to mel dobre. Viz Obdrzalkovi slajdy:
zapis ve tvaru:
+- d0 . d1d2d3... x B^e
- je-li d<>0, reprezentace je nazyvana normalizovanou

Ale jestli chodis k Jirovskemu, tak je mozne, ze to treba definoval jinak...
David
Matfyz(ák|ačka) level II
Příspěvky: 80
Registrován: 7. 11. 2004 18:57
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od David »

Btw. nevedel bys jeste odpovedi na neco z tohodle? :)

http://forum.matfyz.info/viewtopic.php?t=2675

Dik
Xerxes
Matfyz(ák|ačka) level I
Příspěvky: 37
Registrován: 23. 1. 2007 16:32
Typ studia: Informatika Bc.
Bydliště: Zlínský kraj / Kolej 17. listopadu
Kontaktovat uživatele:

Příspěvek od Xerxes »

Ano, chodil jsem k Jirovskému, který to definoval tak, jak jsem napsal. "Oficiální" normalizace zase probíhá tak, ja píšeš ty. Osobně si myslím, že pro reprezentaci ve floating-pointu se víc hodí ten "neoficiální" způsob, protože u mantisy obvykle bývá řádová čárka úplně nalevo. Jistý si ale nejsem. Doporučuji se zeptat přednášejícího...

Dneska jsem složil zkoušku, takže znám odpověď na většinu otázek, ale je to opravdu hodně rozepisování. Spíš bych doporučil skripta pana Jirovského, ze kterých jsem se učil a kde je to všechno vysvětlené. Po síti se pohybují i v elektronické podobě...
Uživatelský avatar
nardew
Matfyz(ák|ačka) level II
Příspěvky: 59
Registrován: 2. 11. 2006 10:15
Typ studia: Informatika Bc.
Bydliště: Otava - Jizni Mesto

Příspěvek od nardew »

mam otazku k normalizacii:

nech je dane cislo 0.1001101 (pocet miest za desatinou ciarkou je teraz irelevantny, taktiez nebudem riesit posun exponentu)

Teraz neviem, ci zapis podla IEEE754 bude mat tvar je 001101 x 2^(-1) alebo 1101 x 2^(-3).

viem ze tato norma vyuziva prvy skryty bit, ale neviem ak su za prvou jednotkou este nejake nuly, ci sa maju aj tie zapisovat alebo nie.

vdaka
David
Matfyz(ák|ačka) level II
Příspěvky: 80
Registrován: 7. 11. 2004 18:57
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Příspěvek od David »

viem ze tato norma vyuziva prvy skryty bit, ale neviem ak su za prvou jednotkou este nejake nuly, ci sa maju aj tie zapisovat alebo nie.
Na mantisu mas vyhrazeno 8 bitu a podle me bys je mel vsechny vyplnit (prepsat).
Kdyz bys to neudelal, tak se podle me muze stat, ze tam bude neco jineho uz z drivejska a pri cteni bys tedy nacetl spatnou hodnotu.

Je to ale bez zaruky. Jenom si to takhle myslim, nikde jsem to neoveroval... Ale na papiru je to stejne jedno... Pokud teda pises na cisty papir a neprepisujes uz jednou napsane jako doktor Drahos :twisted:
Xerxes
Matfyz(ák|ačka) level I
Příspěvky: 37
Registrován: 23. 1. 2007 16:32
Typ studia: Informatika Bc.
Bydliště: Zlínský kraj / Kolej 17. listopadu
Kontaktovat uživatele:

Příspěvek od Xerxes »

@nardew:

Norma IEEE normalizuje se skrytým bitem, takže číslo 0.1001101 se posune na 1.001101 * 2^(-1) a do mantisy se napíše pouze 001101. Ty nuly na začátku být musí, protože tam stejně dobře může být cokoliv jiného. Kdyby se to posunulo až na 100.1101 * 2^(-3), nebylo by jisté, kde vůbec ta první jednička má být, a zápis by nebyl jednoznačný (stejně dobře by tam mohlo být 1.1101 i třeba 1000000000.1101). Takže správný tvar je 1.001101 * 2^(-1).

Ta jednička se schovává proto, že tam nic jiného být nemůže a je zbytečné ji psát (u dvojkové soustavy je každá nenulová číslice jednička).

Kromě toho podporuje norma IEEE i denormalizovaná čísla, ale to už je jiná pohádka...
Uživatelský avatar
nardew
Matfyz(ák|ačka) level II
Příspěvky: 59
Registrován: 2. 11. 2006 10:15
Typ studia: Informatika Bc.
Bydliště: Otava - Jizni Mesto

Příspěvek od nardew »

dakujem, presne toto som chcel vediet. este raz dik
Odpovědět

Zpět na „2006“