-0

**−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 &times; −0 = +0*
* *x &times; −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:

* \sqrt{-0} = -0
* \frac{-0}{-\infty} = +0 (sekvas la signan regulon por divido)
* \frac{+\infty}{-0} = -\infty (sekvas la signan regulon por divido)
* {\pm 0} \times {\pm \infty} = \mbox{NaN} (Ne nombro aŭ interrompo)
* \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. http://java.sun.com/javase/6/docs/api/java/lang/Double.html#equals%28java.lang.Object%29

## 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 \lim_{x\rightarrow 0^-} f(x) kaj \lim_{x\rightarrow 0^+} f(x) respektive, kiuj estas la unuflankaj limesoj. Plu, *f(a−0)* kaj *f(a+0)* estas mallongigaj skribmanieroj de \lim_{x\rightarrow a^-} f(x) kaj \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 
* 
*  - dekuma flosanta punkta specifo kiu inkluzivas negativan nulon
*
*  - la ŝanĝo en la funkcio SIGN de Fortran 95 akomodas negativan nulon
* 
* 
*  — konsidero de negativa nulo en komparado de glitkomaj nombroj
*  — Komplemento ĝis unu de nombroj sur komputiloj de UNIVAC 1100 familio.

Kategorio:Komputila aritmetiko