Čísla v plovoucířádovéčárce INP 2008 FIT VUT v Brně
Čísla v pevné vs plovoucí řádové čárce Pevnářádováčárka FX bez desetinné části (8 bitů) Přímý kód: 0 až 255 Doplňkový kód: -128 až 127 aj. s desetinnou částí (8 bitů) Př. Přímý kód: 0 až 63,75 aj. Čísla jsou na číselné osa rozložena rovnoměrně. Plovoucí řádová čárka FP X = (-1) S M.B E M je mantisa, S je znaménko, B je základ, E je exponent 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Čísla nejsou na číselné ose rozložena rovnoměrně, což umožňuje zvýšit přesnost (více bitů M) nebo rozsah (více bitů E) oproti FX. E M 1 1 1 1 1 1 1 1 2
Příklad FP na 14 bitech E: 5 bitů, M: 8 bitů, S: 1 bit, B = 2 Interpretace: y = (-1) S 0,M x 2 E Př. 17 10 = 10001 x 2 0 = 1000,1 x 2 1 = 100,01 x 2 2 = 10,001 x 2 3 = 1,0001 x 2 4 = 0,10001 x 2 5 S E 0 0 0 1 0 1 1 0 0 0 1 0 0 0 Př. 65536 = 2 16 = 0,1 x 2 17 se na 14 bitů FX v přímém kódu nevejde, ale v FP to lze 0 1 0 0 0 1 1 0 0 0 0 0 0 0 M 3
Příklad FP na 14 bitech Problém 1: malá čísla nelze přesně zobrazit Potřebujeme záporný exponent Řešení 1: Přidat znaménkový bit k exponentu nepoužívá se Řešení 2: Posunout exponent používá se, je potom jednodušší obvodová realizace porovnání čísel v FP Skutečný_exponent = hodnota_pole_exponentu BIAS tj. exponent uložen v kódu s lichým nebo sudým posunutím Použijeme BIAS = 16 (polovina 2 5 ) Př. 17 10 = 0,10001 x 2 5 (protože 16 + 5 = 21) 0 1 0 1 0 1 1 0 0 0 1 0 0 0 Př. 0,25 10 = 0,1 x 2-1 (15-16 = -1) 0 0 1 1 1 1 1 0 0 0 0 0 0 0 4
Příklad FP na 14 bitech Problém 2: zobrazení čísel není unikátní 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 Př. 17 10 = 0,10001 x 2 5 = 0,010001 x 2 6 Unikátnost podpoříme zavedením normalizované mantisy nejlevější bit musí být 1 Explicitní jednička v nejlevějším bitu vždy musí být 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 = 0,1 x 2-4 = 0,03125 Implicitní jednička protože víme, že v nejlevějším bitu mantisy musí být vždy jednička, není nutné ji v mantise reprezentovat, ale stále ji uvažujeme výhoda: získáme jeden bit rozlišení navíc Problém: Pokud se zavede normalizace, musí být nula ošetřena zvláštním způsobem 5
Příklad FP na 14 bitech Problém 3: chyby zobrazení Rozsah zobrazení je -0,11111111 x 2 15 až + 0,11111111 x 2 15. Nejmenší kladnéčíslo (pokud neuvažujeme normalizaci): 0,00000001 x 2-16 tj. například 2-39 nebo 2 128 nelze zobrazit Není ale možné ani dostatečně přesně zobrazit např. 128,5. 128,5 10 = 10000000,1 je na 9 bitů, nejnižší bit se musí zanedbat nebo zaokrouhlit, vzniká chyba: (128,5-128)/128,5 ~ 0,39%. Chyba se při použití výsledku v dalších operacích zvyšuje a zvyšuje. 6
IEEE 754 (1) Standard IEEE 754 z roku 1985 definuje B = 2 a jednoduchou a dvojitou přesnost 24 a 53 bitů. Méně používaný standard IEEE 854 definuje B = 2 nebo 10. Kromě definice B, M, E definuje standard další výjimečné situace. Nečíselný výsledek, označený zkratkou NaN - Not a Number. Tento výsledek se ohlásí např. při výpočtu odmocniny z -1. Definice nekonečna, které vznikne podílem 1/0. S tím souvisí definice aritmetiky na nekonečných hodnotách + -, 1/, arctan( ) = π /2, arccos (-1) = π. Norma definuje čtyři přesnosti vyjádření: Jednoduchá přesnost 24 bitů Jednoduchá rozšířená přesnost 32 bitů Dvojitá přesnost 53 bitů Dvojitá rozšířená přesnost 64 bitů 7
IEEE 754 (2) Číslo N se získá z hodnoty E uvedené v poli exponentu a z hodnoty z pole mantisy (zlomková část ) podle vzorce N = (-1) S (2 E-BIAS ) (F0,F1...F23, nebo F52, nebo F63), kde BIAS = 127, 1023, nebo 16 383 pořadě. Mantisa je vyjádřena přímým kódem se znaménkem, exponent kódem s lichým posunutím. Je důležité si uvědomit, že v poli exponentu je uvedeno číslo zvětšené o hodnotu BIAS. Rozlišujeme tedy pojmy pole exponentu, což je posunutý exponent, a exponent, resp. neposunutý exponent. Zlomková část f udává číslo menší než 1. Mantisu však získáme součtem 1 + f, což můžeme zapsat 1,f. 8
IEEE 754 (3): Příklad Příklad. Jaké číslo je zaznamenáno na 32 bitech v jednoduché přesnosti? 1 1000 0001 0100 0000 0000 0000 0000 000 v poli exponentu je číslo 129 exponent je tedy 129-127 = 2 zlomková část f =,01 2 =,25 mantisa je tedy 1,25 Jde tedy o číslo -1,25. 2 2 = -5 9
IEEE 754 (4) výjimečné hodnoty v single precision U formátu s jednoduchou přesností si vysvětlíme vyjadřování speciálních hodnot. Povolené hodnoty exponentu čísel leží v intervalu <-126, +127>, po posunu +127 získáme povolené hodnoty v poli exponentu <1, 254>. Je-li tedy v poli exponentu 0, nebo 255, jde o hodnoty vyhrazené pro speciální účely: Subnormalizované (denormalizované) číslo: nepočítá se se skrytou 1 a exponent je chápán jako -126. 10
IEEE 754 (5): Příklady X 1,0 2,0 19,5-3,75 0 (spec.) +/- nekonečno NaN Denormalizované číslo Reprezentace X v IEEE 754 single precision 0 01111111 00000000000000000000000 0 10000000 00000000000000000000000 0 10000011 00111000000000000000000 1 10000000 11100000000000000000000 0 00000000 00000000000000000000000 0/1 11111111 00000000000000000000000 0/1 11111111 cokoliv nenulového 0/1 00000000 cokoliv nenulového 11
IEEE 754 (6) rozsah single precision MAX = 2 127 x 1,11111111111111111111111 je to normalizované číslo ~3,4x10 38 MIN = 2-126 x 0,00000000000000000000001 je to denormalizované číslo ~1,4x10-45 Čtyři intervaly nelze reprezentovat Záporná čísla menší než MAX (negative overflow) Záporná čísla větší než MIN (negative underflow) Kladná čísla menší +MIN (positive underflow) Kladná čísla větší než +MAX (positive overflow) 12
IEEE 754 (7): Zaokrouhlování K zaokrouhlování dochází v případě, že dané číslo nelze přesně vyjádřit. Např. při násobení v desítkové soustavě máme výsledek operace 2,1 x 0,5 = 1,05 zaokrouhlit na 2 významové číslice. Je věcí konvence, zda za výsledek prohlásíme 1,1, nebo 1,0. Oba výsledky jsou zatíženy stejně velkou chybou. Norma IEEE zaokrouhluje na číslo, jehož nejnižší číslice je sudá (ve dvojkové soustavě). Zaokrouhlovací procedura je definovaná pro 4 případy: Zaokrouhlení k nejbližšímu číslu Zaokrouhlení k nule Zaokrouhlení k + Zaokrouhlení k - 13
Absolutní chyba zobrazení 14
Příklad výpočtu max. absolutní chyby zobrazení Pro základ B = 2 a pětibitovou normalizovanou mantisu M < 1 určíme pro několik hodnot exponentu maximální absolutní chybu zobrazení. 15
Přesnost čísel FP Čísla s pohyblivou řádovou čárkou mají různou velikost intervalů pro každou konkrétní hodnotu exponentu (obrázek), přičemž pro každý interval je odlišná množina bodů s konstantním rozestupem (bodů je stejný počet). Rozestup mezi reprezentovatelnými body a velikost největší chyby pro jistý exponent je základ-krát větší než chyba v předchozím intervalu. Vidíme, že není pravda, že čísla FP jsou "přesnější", než čísla s pevnou řádovou čárkou. Je-li počet bitů pro číslo FX a počet bitů pro číslo FP stejný, může být representace některých čísel FX přesnější, než jejich vyjádření ve FP, protože u FP je pro mantisu určena jen část z celkového počtu bitů a druhá část je určena pro exponent. 16
Aritmetické operace - FP 17
Problémy při sčítání čísel FP - asociativita FP sčítání není asociativní, tedy platí x + (y + z) není vždy rovno (x + y) + z Příklad klad: Máme tři čísla x = -1,5.10 38, y = 1,5.10 38, z = 1,0. Pak x + (y + z) = -1,5.10 38 + (1,5.10 38 + 1,0) = = -1,5.10 38 + 1,5.10 38 = 0 Naopak (x + y) + z = (-1,5.10 38 + 1,5.10 38 ) + 1,0 = = 0,0 + 1,0 = 1,0 Důvodem tohoto chování je omezená přesnost vyjádření na daném počtu bitů a aproximace skutečných hodnot přibližnými. 18
Problémy při sčítání čísel FP zaokrouhlování Uvažme sčítání s 5ti významovými číslicemi v HW (pro jednoduchost v desítkové soustavě) 4,5674.10 0 +0,00025001 4,56765001 zaokrouhlíme na 4,5677 Nestačí při výpočtu přidat další jednu nebo dvě významové pozice, musí se zapamatovat i jednička na konci čísla, která rozhodne o směru zaokrouhlení. Ve dvojkové soustavě se zapamatuje takovýto nenulový bit při posuvu vpravo v záchytném klopném obvodu s (sticky bit). 19