2. Zobrazení čísel v pohyblivé řádové čárce

2.1. Standard IEEE 754

V roce 1985 se podařilo IEEE (The Institute of Electrical and Electronics Engineers – Institut pro elektrotechnické a elektronické inženýrství) standardizovat formát zobrazení čísel s desetinnou čárkou, který je znám pod zkratkou IEEE 754. Poslední aktualizací prošel v roce 2019.  Jednotlivé části upřesněného semilogaritmického tvaru se v něm zobrazují v pořadí: s|e|f, kde f značí fraction (část mantisy za desetinnou čárkou, přičemž platí, že m = f + 1).

Formáty

V průběhu let se ve standardu objevily tři standardní formáty zobrazení desetinných čísel do binární podoby, jak popisuje obrázek níže. Ve všech formátech je pro znaménko vyhrazeno první místo, za nímž následuje na různý počet míst zobrazený exponent a za ním opět na různých počet míst zobrazená fraction. Používají se pro ně i následující názvy:

  • Jednonásobná přesnost (binary32 s 8 místy pro exponent a 23 místy pro fraction).
  • Dvojnásobná přesnost (binary64 s 11 místy pro exponent a 52 místy pro fraction).
  • Čtyřnásobná přesnost (binary128 s 15 místy pro exponent a 112 místy pro fraction).

Specifika a binární formáty IEEE 754.
Obr. 5: Popis specifických případů a binárních formátů používaných v IEEE 754.

Ve standardu jsou dále specifikovány dva desítkové formáty. V rámci výpočtů se též někdy využívá 80místný rozšířený formát.

Specifické případy

Ve standardu IEEE 754 jsou řešeny i specifické případy, které mohou vyplynout např.  z různých matematických operací:

  • Není překvapivé, že číslo nula je zobrazeno tak, že se na všech místech objeví 0. Nemusí to platit pouze pro první místo, na kterém se může objevit i 1. Tím se nám zde vrací problém dvou 0, jako tomu bylo u přímého kódu. Znaménko u 0 se projevuje v některých operacích (pokud by např. nějaká operace vedla na dělení nulou). V mnoha případech ovšem důležité není a tudíž se v binárních formátech zobrazení často počítá pouze s tzv. kladnou 0.
  • U nekonečna má znaménko větší důležitost, což je dáno logicky pohledem na číselnou osu, jak ji vnímáme. Důležité je také množství operací, které k plus nebo mínus nekonečnu mohou vést. Může se jednat o různé limity, afinity, přičítání nekonečna apod.
  • Zkratka NaN značí Not a Number. Jde tedy o situace, kdy výsledkem nějaké početní operace není číslo. Standard IEEE 754 rozlišuje dvě podoby NaN. U quiet NaN je na prvním místě fraction 1 (používá se pro zpětnou diagnostiku zděděných informací z neplatných nebo nedostupných dat a výsledků operací). U signaling NaN je na prvním místě fraction 0, zatímco alespoň jedna 1 se musí objevit na některém ze zbývajících míst fraction (používá se pro reprezentaci neinicializovaných proměnných a může být vyhrazen i pro operandy signalizující výjimky při neplatné operaci).

 Jaké výpočty mohou vést k některému z nekonečen nebo k NaN?

 Proč je důležité, aby u signaling NaN bylo některé z dalších míst fraction za prvním nenulové?