Plovoucí desetinnou čárkou
Proč čísla s plovoucí desetinnou čárkou jsou potřeba
Od paměti počítače je omezená, nelze uložit čísla s nekonečnou přesností, bez ohledu na to, zda používáte binární zlomky nebo desetinná ty: v určitém okamžiku budete muset odříznout. Ale kolik přesnosti je potřeba? A kde je to potřeba? Kolik celočíselných číslic a kolik zlomkových číslic?
- pro inženýra, který staví dálnici, nezáleží na tom, zda je to 10 metrů nebo 10.0001 metrů široká – jejich měření pravděpodobně nejsou tak přesná.
- pro někoho, kdo navrhne mikročip, je 0,0001 metru (desetina milimetru) obrovský rozdíl – ale nikdy se nebudou muset vypořádat se vzdáleností větší než 0,1 metru.
- fyzik musí použít rychlost světla (asi 300000000) a Newtonovu gravitační konstantu (asi 0.0000000000667) společně ve stejném výpočtu.
Chcete-li uspokojit inženýra a návrháře čipů, formát čísel musí poskytovat přesnost čísel při velmi různých veličinách. Je však zapotřebí pouze relativní přesnost. Abychom uspokojili fyzika, musí být možné provádět výpočty, které zahrnují čísla s různými velikostmi.
v zásadě není užitečné mít pevný počet celočíselných a zlomkových číslic-a řešením je formát s plovoucí desetinnou čárkou.
jak fungují čísla s plovoucí desetinnou čárkou
myšlenka je sestavit řadu dvou hlavních částí:
- význam, který obsahuje číslice čísla. Negativní významy představují záporná čísla.
- exponent, který říká, kde desetinné (nebo binární) bod je umístěn vzhledem k začátku significand. Záporné exponenty představují čísla, která jsou velmi malá (tj.
Takový formát splňuje všechny požadavky:
- může reprezentovat čísla v divoce různých veličin (omezený délkou exponentu)
- poskytuje stejný relativní přesnost ve všech veličin (omezeno délkou significand)
- umožňuje výpočty přes veličin: násobení velmi velkého a velmi malého čísla zachovává přesnost obou ve výsledku.
desetinná čísla s plovoucí desetinnou čárkou mají obvykle formu vědeckého zápisu s podrobným bodem vždy mezi 1.a 2. číslicí. Exponent je buď napsán explicitně včetně báze, nebo se používá e, aby se oddělil od významu.
standard
téměř všechny hardwarové a programovací jazyky používají čísla s plovoucí desetinnou čárkou ve stejných binárních formátech, které jsou definovány ve standardu IEEE 754. Obvyklé formáty jsou 32 nebo 64 bitů v celkové délce:
Format | Total bits | Significand bits | Exponent bits | Smallest number | Largest number |
---|---|---|---|---|---|
Single precision | 32 | 23 + 1 sign | 8 | ca. 1.2 ⋅ 10-38 | ca. 3.4 ⋅ 1038 |
Double precision | 64 | 52 + 1 sign | 11 | ca. 2.2 ⋅ 10-308 | ca. 1.8 ⋅ 10308 |
Všimněte si, že tam jsou některé zvláštnosti:
- aktuální sekvence bit je znaménkový bit jako první, následuje exponent a nakonec significand bitů.
- exponent nemá znaménko; místo toho se od něj odečte zkreslení exponentu (127 pro jednoduchou a 1023 pro dvojitou přesnost). Toto a bitová posloupnost umožňují správné porovnání a třídění čísel s plovoucí desetinnou čárkou i při jejich interpretaci jako celá čísla.
- significand je nejvíce významná číslice je vynechán a předpokládá se, že 1, s výjimkou podprůměrný čísla, které jsou označeny all-0 exponent a umožňují řadu rozsahu za nejmenší čísla uvedená v tabulce výše, na úkor přesnosti.
- existují oddělené kladné a záporné nulové hodnoty, které se liší znakovým bitem, kde všechny ostatní bity jsou 0. Ty musí být považovány za stejné, i když jejich bitové vzory jsou odlišné.
- existují speciální kladné a záporné hodnoty nekonečna, kde exponent je všechny 1-bity a significand je všechny 0-bity. Jedná se o výsledky výpočtů, kde je překročen kladný rozsah exponentu nebo dělení pravidelného čísla nulou.
- existují speciální ne číselné (nebo NaN) hodnoty, kde exponent je všechny 1-bity a significand není Všechny 0-bity. Ty představují výsledek různých nedefinovaných výpočtů (jako je násobení 0 a nekonečna, jakýkoli výpočet zahrnující hodnotu NaN nebo případy specifické pro aplikaci). Ani bitově identické hodnoty NaN nesmí být považovány za stejné.
Pokud se to zdá příliš abstraktní a chcete vidět, jak některé konkrétní hodnoty vypadat v IEE 754, zkuste Plovák Hračka, nebo IEEE 754 Vizualizace, nebo Float Vystaveny.
Leave a Reply