**−0** estas la prezento de **negativa nulo**, nombro, kiu ekzistas en komputado en iuj prezentoj de signaj nombroj por entjeroj kaj en pluraj glitpunktaj prezentoj. En la matematiko ne estas aparta koncepto de negativa nulo (aŭ pozitiva nulo) **0**.

Prezentoj
---------

En 1+7-bita signo-kaj-grandeca prezento por entjeroj, negativa nulo estas prezentata per la duuma valoro 10000000. En 8-bita prezento negativa nulo estas prezentata per la duuma valoro 11111111. En ambaŭ prezentoj, pozitiva nulo estas prezentata per 00000000.

En IEEE 754 glitkomaj nombroj, negativa nulo estas prezentata per la eksponento kaj mantiso estantaj nuloj kaj la signa bito estanta unu.

En specifo de kodoprezento Ĝenerala Dekuma Aritmetiko de IBM, flosanta punkta prezento kiu uzas dekuman aritmetikon, negativa nulo estas prezentata per validaj eksponento kaj la koeficiento de ĉiuj nuloj, kaj la signa bito estanta unu.

En la nun dominanta prezento de signaj entjeroj, komplemento de du, ne estas negativa nulo, kaj tio estas unu de la kaŭzoj kial ĉi tiu prezento estas populara.

Estas pretendo ke la inkluzivo de signita nulo en IEEE 754 multe plisimpligas atingon de cifereca akurateco en iuj kritikaj problemoj, aparte en komputado kun kompleksaj elementaj funkcioj. Aliflanke, la koncepto de signita nulo estas kontraŭ la ĝenerala supozo farata en plejparto de matematiko (kaj en plejparto de matematika edukado) ke negativa nulo estas la samo kiel nulo. Prezentoj kiuj permesas negativan nulon povas esti fonto de eraroj en programoj, ĉar programistoj ne konscias (aŭ povas forgesi) ke, kvankam la du nulaj prezentoj kondutas kiel egalaj ĉe nombraj komparoj, ili estas malsamaj bitaj ŝablonoj kaj liveras malsamajn rezultojn en iuj operacioj.

Ecoj
----

En programlingvoj kiel C, C#, C++, kaj Ĝavo eblas ricevi negativan nulon kiel la rezulton de esprimo (ekzemple kiel la rezulton de aritmetika maltroo sur negativa nombro), aŭ kiel *−1.0\*0.0*, aŭ simple kiel *−0.0*.

### Aritmetiko

Multipliko kaj divido sekvas iliajn kutimajn regulojn por kombinado de signoj:

* *x / +0 = +∞* (por pozitiva *x*)
* *x / −0 = −∞* (por pozitiva *x*)
* *−0 / x = −0* (por pozitiva *x*)
* *−0 / x = +0* (por negativa *x*)
* *+0 / x = −0* (por negativa *x*)
* *−0 / +∞ = −0*
* *−0 / −∞ = +0*
* *+0 / −∞ = −0*
* *−0 × −0 = +0*
* *x × −0 = −0* (por pozitiva *x*)

Adicio kaj subtraho estas konsiderataj speciale se la valoroj povas nuliĝi:

* *x + +0 = x* (por *x* malsama de 0)
* *x + −0 = x* (por *x* malsama de 0)

* *+0 + +0 = +0*
* *−0 + −0 = −0*

* *−0 − +0 = −0*
* *+0 − −0 = +0*

* *x − x = x + (−x) = +0* (por ĉiu finia *x*, kiam −0 rondigatas al negativa)

Pro negativa nulo (kaj nur pro ĝi), la esprimoj *z = −(x − y)* kaj *z = (−x) − (−y)*, por glitkomaj variabloj *x*, *y* kaj *z*, ne povas esti optimumigitaj al *z = y − x*.

Iuj aliaj specialaj reguloj:

* {\displaystyle {\sqrt {-0}}=-0}
* {\displaystyle {\frac {-0}{-\infty }}=+0} (sekvas la signan regulon por divido)
* {\displaystyle {\frac {+\infty }{-0}}=-\infty } (sekvas la signan regulon por divido)
* {\displaystyle {\pm 0}\times {\pm \infty }={\mbox{NaN}}} (Ne nombro aŭ interrompo)
* {\displaystyle {\frac {\pm 0}{\pm 0}}={\mbox{NaN}}}

### Komparo

Laŭ la IEEE 754 normo, negativa nulo kaj pozitiva nulo estas komparataj kiel egalaj. Tial simpla komparo ne estas sufiĉa provo, ĉu la nombro estas negativa nulo.

Speciala programado povas esti necesa por distingi la du valoroj +0 kaj −0:

* Disĵeti la nombron al entjera speco, kaj kompari la bitojn;
* La *CopySign()* funkcio difinita per IEEE 754 povas kutime kopii la signon de la nulo al iu ne-nula nombro.
* Preni la inverson de la nulo kaj ricevi *1/(+0) = +∞* aŭ *1/(−0) = −∞*.

Tamen, iuj programlingvoj povas provizi alternativajn komparajn operatorojn kiuj distingas la du nulojn. Ĉi tio estas la okazo, ekzemple, ĉe la membra funkcio equals en Ĝava klaso Double.

Sciencaj uzoj
-------------

Neformale, oni povas uzi la skribmanieron "−0" por negativa valoro kiu estis rondigita al nulo. Ĉi tiu skribmaniero povas esti utila kiam negativa signo estas grava; ekzemple, ĉe temperaturoj esprimitaj en gradaj celsiaj, kie negativa signo signifas ke la temperaturo estas pli sube de frostado de akvo.

*f(−0)* kaj *f(+0)* estas mallongigaj skribmanieroj de {\displaystyle \lim \_{x\rightarrow 0^{-}}f(x)} kaj {\displaystyle \lim \_{x\rightarrow 0^{+}}f(x)} respektive, kiuj estas la unuflankaj limesoj. Plu, *f(a−0)* kaj *f(a+0)* estas mallongigaj skribmanieroj de {\displaystyle \lim \_{x\rightarrow a^{-}}f(x)} kaj {\displaystyle \lim \_{x\rightarrow a^{+}}f(x)} respektive.

En statistika mekaniko, oni iam uzas negativaj absolutaj temperaturoj por priskribi sistemojn kun loĝantara inversigo, kiu povas esti konsiderata al havi temperaturon pli granda ol pozitiva malfinio. En ĉi tiu ĉirkaŭteksto, temperaturo de "negativa nulo" estas (teoria) temperaturo pli granda ol ĉiu alia negativa temperaturo, respektiva al la (teoria) maksimuma konjektebla amplekso de loĝantara inversigo.

Vidu ankaŭ
----------

* 0,999...

Referencoj
----------

1. ↑  William Kahan, "Branĉaj Tranĉoj por Kompleksaj Rudimentaj Funkcioj, aŭ Multo da Bruo Pri Nula Signa Bito", en *La Stato de la Arto en Cifereca Analizo)* (redaktantoj Iserles kaj Powell), Clarendon Press, Oksfordo, 1987.
2. ↑  William Kahan, Derivaĵoj en la Kompleksa z-ebeno, p10.

* Thomas Wang  (Marto 2000). Java Floating-Point Number Intricacies - Ĝava Flosanta Punkta Nombroversio Septembro 2000.
* Mike Colishaw  (28 Julio de 2008). Decimal Arithmetic Specification, version 1.68 - Dekuma Aritmetiko Specifo, versio 1.68. Kontrolita en 2008-08-14. - dekuma flosanta punkta specifo kiu inkluzivas negativan nulon
* Kittel, Charles; and Herbert Kroemer  (1980). Thermal Physics - Varmeca Fiziko. W. H. Freeman & Company. ISBN 0716710889.
* Michael Ingrassia. Fortran 95 SIGN Change - Ŝanĝo de SIGN en Fortran (programlingvo) 95. *Sun Developer Network - Suna Ellaboranta Reto*. Kontrolita en 15-a de oktobro, 2005. - la ŝanĝo en la funkcio SIGN de Fortran 95 akomodas negativan nulon
* JScript data types - Datumtipoj de JScript. *Microsoft Developer Network (MSDN) JScript*. Kontrolita en 16-a de oktobro, 2005.
* A look at the floating-point support of the Java virtual machine - Glitkoma subteno de la Ĝava virtuala maŝino. *Javaworld*. Kontrolita en 16-a de oktobro, 2005.
* Bruce Dawson. Comparing floating point numbers - Komparado de glitkomaj nombroj. — konsidero de negativa nulo en komparado de glitkomaj nombroj
* John Walker. Minus Zero - Minus Nulo. *UNIVAC Memories*. Kontrolita en 17-a de oktobro, 2005. — Komplemento ĝis unu de nombroj sur komputiloj de UNIVAC 1100 familio.