-0: Malsamoj inter versioj

El Vikipedio, la libera enciklopedio
[nekontrolita versio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
KuBOT (diskuto | kontribuoj)
e robota aldono de {{Metaŝablono en artikolo|Cito}}; kosmetikaj ŝanĝoj
JagRoBot (diskuto | kontribuoj)
e Roboto anstataŭigis streketojn skribitajn per ento
Linio 88: Linio 88:
* {{Cito|URL=http://msdn.microsoft.com/library/en-us/script56/html/js56jscondatatype.asp|Titolo=JScript data types - Datumtipoj de JScript|Laboro=Microsoft Developer Network (MSDN) JScript |Alirdato=16-a de oktobro, 2005}}
* {{Cito|URL=http://msdn.microsoft.com/library/en-us/script56/html/js56jscondatatype.asp|Titolo=JScript data types - Datumtipoj de JScript|Laboro=Microsoft Developer Network (MSDN) JScript |Alirdato=16-a de oktobro, 2005}}
* {{Cito|URL=http://www.javaworld.com/javaworld/jw-10-1996/jw-10-hood.html|Titolo=A look at the floating-point support of the Java virtual machine - Glitkoma subteno de la Ĝava virtuala maŝino|Laboro=Javaworld|Alirdato=16-a de oktobro, 2005}}
* {{Cito|URL=http://www.javaworld.com/javaworld/jw-10-1996/jw-10-hood.html|Titolo=A look at the floating-point support of the Java virtual machine - Glitkoma subteno de la Ĝava virtuala maŝino|Laboro=Javaworld|Alirdato=16-a de oktobro, 2005}}
* {{Cito|URL=http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm|Titolo=Comparing floating point numbers - Komparado de glitkomaj nombroj|Aŭtoro=Bruce Dawson|Dato=}} — konsidero de negativa nulo en komparado de glitkomaj nombroj
* {{Cito|URL=http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm|Titolo=Comparing floating point numbers - Komparado de glitkomaj nombroj|Aŭtoro=Bruce Dawson|Dato=}} konsidero de negativa nulo en komparado de glitkomaj nombroj
* {{Cito|URL=http://www.fourmilab.ch/documents/univac/minuszero.html|Titolo=Minus Zero - Minus Nulo|Aŭtoro=John Walker|Laboro=UNIVAC Memories|Alirdato=17-a de oktobro, 2005}} — Komplemento ĝis unu de nombroj sur komputiloj de [[UNIVAC]] 1100 familio.
* {{Cito|URL=http://www.fourmilab.ch/documents/univac/minuszero.html|Titolo=Minus Zero - Minus Nulo|Aŭtoro=John Walker|Laboro=UNIVAC Memories|Alirdato=17-a de oktobro, 2005}} Komplemento ĝis unu de nombroj sur komputiloj de [[UNIVAC]] 1100 familio.
{{Metaŝablono en artikolo|Cito}}
{{Metaŝablono en artikolo|Cito}}



Kiel registrite je 21:26, 5 dec. 2012

−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[1], aparte en komputado kun kompleksaj elementaj funkcioj[2]. 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:

  • (sekvas la signan regulon por divido)
  • (sekvas la signan regulon por divido)
  • (Ne nombro aŭ interrompo)

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) = +∞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. [1]

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 kaj respektive, kiuj estas la unuflankaj limesoj. Plu, f(a−0) kaj f(a+0) estas mallongigaj skribmanieroj de kaj 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ŭ

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.