Articles

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.