Podepsaná nula - Signed zero

Podepsaná nula je nula s přidruženým znaménkem . V běžné aritmetice číslo 0 nemá znaménko, takže −0, +0 a 0 jsou totožné. Při práci na počítači však některé číselné reprezentace umožňují existenci dvou nul, často označovaných −0 ( záporná nula ) a +0 ( kladná nula ), které jsou numerickými srovnávacími operacemi považovány za rovnocenné, ale s možným odlišným chováním v konkrétních operacích. K tomu dochází v reprezentaci znaménka a velikosti a doplňku podepsaných čísel pro celá čísla a ve většině reprezentací čísel s plovoucí desetinnou čárkou . Číslo 0 je obvykle kódováno jako +0, ale může být reprezentováno buď +0 nebo -0.

Standard IEEE 754 pro aritmetiku s pohyblivou řádovou čárkou (v současnosti používá většina počítačů a programovacích jazyků, které podporují čísla s plovoucí desetinnou čárkou) vyžaduje +0 i -0. Skutečnou aritmetiku s nulami se znaménkem lze považovat za variantu rozšířené řady reálných čísel tak, že 1/−0 = - a 1/ +0 = +∞; dělení je nedefinováno pouze pro ± 0/± 0 a ± ∞/± ∞.

Negativně podepsal nula odráží matematickou analýzu pojetí se blíží 0 zdola jako jednostranný limitem , který může být označené x  → 0 - , x  → 0-, nebo x  → ↑ 0. Zápis „−0“ lze neformálně použít k označení záporného čísla, které bylo zaokrouhleno na nulu. Pojem záporná nula má také některé teoretické aplikace ve statistické mechanice a dalších oborech.

Tvrdí se, že zahrnutí podepsané nuly do IEEE 754 značně usnadňuje dosažení numerické přesnosti v některých kritických problémech, zejména při práci se složitými elementárními funkcemi. Na druhou stranu koncept nuly se znaménkem je v rozporu s obecným předpokladem ve většině matematických polí, že záporná nula je totéž co nula. Reprezentace, které umožňují zápornou nulu, mohou být zdrojem chyb v programech, pokud vývojáři softwaru neberou v úvahu, že i když se dvě nulové reprezentace chovají při numerickém srovnání stejně, v některých operacích poskytují různé výsledky.

Zastoupení

Široce používané kódování komplementu dvou neumožňuje zápornou nulu. V reprezentaci znaménka a velikosti 1+7 bitů pro celá čísla je záporná nula reprezentována bitovým řetězcem 1000 0000 . V 8bitové reprezentaci komplementu je záporná nula reprezentována bitovým řetězcem 1111 1111 . Ve všech třech kódováních je kladná nula reprezentována 0000 0000 . Jedná se však o neobvyklé formáty, nejběžnějšími formáty včetně záporné nuly jsou formáty IEEE 754 s plovoucí desetinnou čárkou, popsané níže.

Záporná nula podle reprezentace IEEE 754 v binárním32

V IEEE 754 čísel binární s plovoucí desetinnou čárkou, nulové hodnoty jsou reprezentovány předepjaté exponenty a mantisy obojí je nula. Záporná nula má znaménkový bit nastaven na jedničku. Jeden může získat zápornou nulu v důsledku určitých výpočtů, například jako výsledek aritmetického podtečení na záporném čísle −1.0×0.0, nebo jednoduše jako −0.0.

V IEEE 754 dekadickém kódování s plovoucí desetinnou čárkou je záporná nula reprezentována exponentem, který je jakýmkoli platným exponentem v rozsahu kódování, skutečný význam je nula a bit znaménka je jedna.

Vlastnosti a manipulace

Standard IEEE 754 s plovoucí desetinnou čárkou určuje chování kladné nuly a záporné nuly při různých operacích. Výsledek může záviset na aktuálním nastavení režimu zaokrouhlování IEEE .

Zápis

V systémech, které obsahují nuly se znaménkem i bez znaménka, se pro podepsané nuly někdy používá notace a .

Aritmetický

Sčítání a násobení jsou komutativní, ale je nutné dodržovat některá speciální pravidla, což znamená, že obvyklá matematická pravidla pro algebraické zjednodušení nemusí platit. Níže uvedený znak ukazuje získané výsledky s plovoucí desetinnou čárkou (není to obvyklý operátor rovnosti).

Při násobení nebo dělení se vždy dodržuje obvyklé pravidlo pro znaménka:

  • (pro rozdíl od ± ∞)
  • (pro rozdíl od 0)

Existují speciální pravidla pro sčítání nebo odčítání podepsané nuly:

  • (pro rozdíl od 0)
  • (pro jakékoli konečné , −0 při zaokrouhlování směrem k zápornému)

Kvůli záporné nule (a také když je režim zaokrouhlování směrem nahoru nebo dolů) nelze výrazy- ( x - y ) a ( -x )-(- y ) pro proměnné s plovoucí desetinnou čárkou x a y nahradit y - x . Nicméně (-0) + x může být nahrazeno X, se zaokrouhlením na nejbližší (s výjimkou, kdy x může být signalizační NaN ).

Některá další speciální pravidla:

  • (dodržuje pravidlo rozdělení pro rozdělení)
  • (pro nenulové se řídí znakovým pravidlem pro dělení)
  • ( Není to číslo ani přerušení pro neurčitou formu )

Dělení nenulového čísla nulou nastaví příznak dělení nulou a operace produkující NaN nastaví příznak neplatné operace. Popisovač výjimky se nazývá-li povoleno pro odpovídající vlaječku.

Srovnání

Podle standardu IEEE 754 by záporná nula a kladná nula měly být srovnatelné s obvyklými (numerickými) srovnávacími operátory, jako jsou ==operátory C a Java . V těchto jazycích mohou být k rozlišení těchto dvou hodnot zapotřebí speciální programovací triky:

  • Zadejte přerušení čísla na celočíselný typ, abyste se podívali na znaménkový bit v bitovém vzoru;
  • pomocí funkce ISO C copysign()(operace copySign IEEE 754) zkopírujte znaménko nuly na nenulové číslo;
  • pomocí signbit()makra ISO C (operace IEEE 754 isSignMinus), která vrací, zda je nastaven znakový bit čísla;
  • přičemž převrácenou hodnotu nuly získáte buď 1/( +0) = +∞ nebo 1/( - 0) = −∞ (pokud není dělení nulovou výjimkou zachyceno).

Poznámka: Casting na integrální typ nebude vždy fungovat, zvláště na doplňkových systémech dvou.

Některé programovací jazyky však mohou poskytovat alternativní operátory porovnání, které tyto dvě nuly odlišují. To je případ například metody equals ve Doubletřídě Java wrapper.

V zaokrouhlených hodnotách, jako jsou teploty

Neformálně lze pro zápornou hodnotu, která byla zaokrouhlena na nulu, použít zápis „−0“. Tento zápis může být užitečný, pokud je záporné znaménko významné; například při tabulkování teplot Celsia , kde záporné znaménko znamená pod bodem mrazu .

Ve statistické mechanice

Ve statistické mechanice se někdy používá k popisu systémů s inverzí populace negativní teploty , o kterých lze uvažovat, že mají teplotu větší než kladné nekonečno, protože koeficient energie ve funkci distribuce populace je −1/teplota. V této souvislosti je teplota -0 (teoretická) teplota větší než jakákoli jiná negativní teplota, což odpovídá (teoretickému) maximálnímu myslitelnému rozsahu inverze populace, opačnému extrému až +0.

Viz také

Reference

Další čtení