Čí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.
1
1
1
1
1
1
1
1
1
1
1
1
1
1
– s desetinnou částí (8 bitů) • Př. Přímý kód: 0 až 63,75 • aj.
1
1
– Čísla jsou na číselné osa rozložena rovnoměrně.
• Plovoucí řádová čárka – FP – X = (-1)SM.BE • • • •
M je mantisa, S je znaménko, B je základ, E je exponent
E
1
1
M
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.
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 2E • Př. 1710 = 10001 x 20 = 1000,1 x 21 = 100,01 x 22 = 10,001 x 23 = 1,0001 x 24 = 0,10001 x 25 E
S 0
0
0
M 1
0
1
1
0
0
0
1
0
0
0
• Př. 65536 = 216 = 0,1 x 217 – 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 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 25) • Př. 1710 = 0,10001 x 25 (protože 16 + 5 = 21) 0
1
0
1
0
1
1
0
0
0
1
0
0
0
0
0
• Př. 0,2510 = 0,1 x 2-1 (15-16 = -1) 0
0
1
1
1
1
1
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ř. 1710 = 0,10001 x 25 = 0,010001 x 26 • 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 215 až + 0,11111111 x 215 . • Nejmenší kladné číslo (pokud neuvažujeme normalizaci): 0,00000001 x 2-16 • tj. například 2-39 nebo 2128 nelze zobrazit • Není ale možné ani dostatečně přesně zobrazit např. 128,5. • 128,510 = 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 (2E-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 = ,012 = ,25 mantisa je tedy 1,25 Jde tedy o číslo -1,25 . 22 = -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
Reprezentace X v IEEE 754 – single precision
1,0
0 01111111 00000000000000000000000
2,0
0 10000000 00000000000000000000000
19,5
0 10000011 00111000000000000000000
-3,75
1 10000000 11100000000000000000000
0 (spec.)
0 00000000 00000000000000000000000
+/- nekonečno
0/1 11111111 00000000000000000000000
NaN
0/1 11111111 cokoliv nenulového
Denormalizované číslo
0/1 00000000 cokoliv nenulového
11
IEEE 754 (6) – rozsah „single precision“ • MAX = 2127 x 1,11111111111111111111111 – je to normalizované číslo ~3,4x1038
• 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.1038, y = 1,5.1038, z = 1,0. Pak x + (y + z) = -1,5.1038 + (1,5.1038 + 1,0) = = -1,5.1038 + 1,5.1038 = 0 Naopak (x + y) + z = (-1,5.1038 + 1,5.1038) + 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 +0,00025001 4,56765001
.100 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