Μηδέν με πρόσημο

Το **μηδέν με πρόσημο** είναι ο αριθμός του μηδενός (0) μαζί με το θετικό (+) ή το αρνητικό (-) πρόσημο. Στην συνήθη αριθμητική ο αριθμός μηδέν δεν διαθέτει πρόσημο, έτσι το +0 ή -0 είναι το ίδιο με το 0. Ωστόσο στην επιστήμη υπολογιστών, κάποιες αναπαραστάσεις αριθμών επιτρέπουν την ύπαρξη δύο τύπων μηδενικών, του αρνητικού μηδενός (-0) και του θετικού μηδενός (+0) τα οποία ως αριθμητικές ποσότητες είναι ίσες αλλά επιφέρουν διαφορετικά αποτελέσματα σε συγκεκριμένους υπολογισμούς στα πρόσημα και μεγέθη στο συμπλήρωμα ως προς 1 σε σχέση με τις αριθμητικές αναπαραστάσεις με πρόσημο για τους ακεραίους, και στις περισσότερες αναπαραστάσεις της αριθμητικής κινητής υποδιαστολής. Στις περιπτώσεις αυτές, ο κοινός αριθμός 0 συνήθως αναπαρίσταται ως προεπιλογή με θετικό πρόσημο (+0).

Το πρότυπο IEEE 754 για τις πράξεις κινητής υποδιαστολής (το οποίο ακολουθείται από τους περισσότερους υπολογιστές και γλώσσες προγραμματισμού) απαιτεί την ύπαρξη και του +0 και του −0. Η *[[Πραγματικός αριθμός|πραγματική]]* αριθμητική με χρήση μηδενός με πρόσημο αποτελεί εκδοχή της εκτεταμένης γραμμής πραγματικών αριθμών τέτοιας ώστε 1/−0 = −∞ και 1/+0 = +∞, ενώ η διαίρεση δεν είναι ορισμένη για τις πράξεις ±0/±0 and ±∞/±∞.

Τα μηδενικά με αρνητικό πρόσημο αντιστοιχούν στην έννοια της μαθηματικής ανάλυσης όπου το 0 προσεγγίζεται από κάτω ως μονόπλευρο όριο, το οποίο αναπαριστάται ως *x*&nbsp;→&nbsp;0−, *x*&nbsp;→&nbsp;0−, ή *x*&nbsp;→&nbsp;↑0. Η σημειολογία "−0" χρησιμοποιείται επίσης ανεπίσημα υποδηλώνοντας έναν μικρό αρνητικό αριθμό ο οποίος έχει στρογγυλοποιηθεί στο μηδέν. Η έννοια του αρνητικού μηδενός έχει επίσης κάποιες θεωρητικές εφαρμογές στην στατιστική μηχανική και άλλα συναφή πεδία.

Έχει υποστηριχτεί πως η συμπερίληψη του μηδέν με πρόσημο στο πρότυπο IEEE&nbsp;754 κάνει ευκολότερη την επίτευξη αριθμητικής ακρίβειας σε κάποια κρίσιμα προβλήματα, συγκεκριμένα όταν γίνονται υπολογισμοί με συναρτήσεις μιγαδικών αριθμών.

## Αναπαραστάσεις
Στην κωδικοποίηση του συμπληρώματος ως προς 2 δεν επιτρέπεται η χρήση αρνητικού μηδενός. Στην αναπαράσταση αριθμών με πρόσημο για ακεραίους αριθμούς ως δυαδικό ψηφίο της μορφής 1+7, το αρνητικό μηδέν αναπαριστάται με την ακολουθία δυαδικών ψηφίων . Στο συμπλήρωμα ως προς 1 8 δυαδικών ψηφίων, το αρνητικό μηδέν αναπαριστάται με την δυαδική ακολουθία . Σε όλες τις τρεις κωδικοποιήσεις, το θετικό μηδέν αναπαριστάται ως .

μικρογραφία|400px|Αναπαράσταση του μηδενός κατά το πρότυπο IEEE 754 σε μορφή 32 δυαδικών ψηφίων.
Στους δυαδικούς αριθμούς κινητής υποδιαστολής του προτύπου IEEE 754, οι μηδενικές τιμές συμβολίζονται μέσω χρήσης του *προκατελλημένου* εκθέτη και της μαντίσας (σταθερό μέρος του αριθμού κιν.υποδ.) ως μηδέν. Το αρνητικό μηδέν δεν έχει ορισμένο το ψηφίο προσήμου, ωστόσο αυτό μπορεί να εξαχθεί μέσω άλλων υπολογισμών όπως π.χ. το αποτέλεσμα που προκύπτει από την αριθμητική υποχείλιση (*arithmetic underflow*) σε αρνητικό αριθμό, ή ως `−1.0×0.0`, ή απλώς ως `−0.0`.

Στις δεκαδικές πράξεις κινητής υποδιαστολής IEEE 754 το αρνητικό μηδέν εκφράζεται με τον εκθέτη να διαθέτει την οποιαδήποτε δυνατή τιμή εντός του εύρους της κωδικοποίησης, με την μαντίσα να είναι είναι 0, και το δυαδικό ψηφίο προσήμου 1.

## Ιδιότητες
### Σημειολογία
Για τα συστήματα τα οποία υποστηρίζουν και τους δύο τύπους μηδενός, χρησιμοποιείται η σημειολογία 0^+και 0^- για την διάκριση του προσήμου.

### Αριθμητική
Οι πράξεις της πρόσθεσης και του πολλαπλασιασμού είναι αντιμεταθετικές, αλλά υπάρχουν κάποιοι ειδικοί κανόνες οι οποίοι διαφοροποιούνται από τους συνήθεις μαθηματικούς κανόνες ως προς την αλγεβραϊκή απλοποίηση. Το σύμβολο = χρησιμοποιείται για να υποδηλώσει το αποτέλεσμα με πρόσημο, για παράδειγμα κατά τον πολλαπλασιασμό ή διαίρεση:

* \frac{-0}{ \left| x \right| } = -0\,\! (για x διάφορο του 0)
* (-0) \cdot (-0) = +0\,\!

Υπάρχουν ειδικοί κανόνες για την πρόσθεση ή την αφαίρεση με το μηδέν με πρόσημο:

* x + (\pm 0) = x\,\! (για x διάφορο του 0)
* (-0) + (-0) = (-0) - (+0) = -0\,\!
* (+0) + (+0) = (+0) - (-0) = +0\,\!
* x - x = x + (-x) = +0\,\! (για οποιοδήποτε πεπερασμένο x, και −0 όταν γίνεται στρογγυλοποίηση προς το αρνητικό)

Λόγω του αρνητικού μηδενός, και επίσης όταν η στρογγυλοποίηση γίνεται προς τα πάνω ή προς τα κάτω, οι εκφράσεις  και , για τις μεταβλητές κινητής υποδιαστολής *x* και *y*, δεν μπορούν να αντικατασταθούν από . Ωστόσο το  μπορεί να αντικατασταθεί με το *x* μέσω στρογγυλοποίησης προς την πλησιέστερη τιμή (εκτός όταν το *x* χρησιμοποιείται για την σημειοδότηση NaN).

Κάποιες άλλες συμβάσεις:

* \sqrt{-0} = -0\,\!
* \frac{-0}{-\infty} = +0\,\! (κατά την σύμβαση του προσήμου για την διαίρεση)
* \frac{\left|x\right|}{-0} = -\infty\,\! (για τα μη μηδενικά x, κατά την σύμβαση του προσήμου για την διαίρεση)
* {\pm 0} \times {\pm \infty} = \mbox{NaN}\,\! (NaN ή διακόπτης για απροσδιόριστη μορφή)
* \frac{\pm 0}{\pm 0} = \mbox{NaN}\,\!

Η διαίρεση ενός μη μηδενικού αριθμού με το μηδέν ενεργοποιεί την σήμανση (*flag*) ως προς την διαίρεση προς το μηδέν ως σήμανση λανθασμένης εκτέλεσης, και εάν έχει οριστεί διαχείριση εξαίρεσης τότε ενεργοποιείται για την διαχείριση του σφάλματος.

### Συγκρίσεις
Σύμφωνα με το πρότυπο IEEE&nbsp;754, τα μηδενικά με θετικό και αρνητικό πρόσημο όταν εξετάζονται ως προς την ισότητα μεταξύ τους (με τον λογικό τελεστή ==) θα πρέπει να λογίζονται ως ίσα. Στις γλώσσες προγραμματισμού ωστόσο μπορούν να χρησιμοποιηθούν διάφορα τεχνάσματα ώστε να γίνει διάκριση μεταξύ των δύο τιμών:

* με την τροποποίηση *του [[Τύπος δεδομένων|τύπου δεδομένων]]* (*type punning*, είδος *type casting*) του αριθμού ώστε να γίνει τύπος ακεραίου αριθμού, κατά τρόπο ώς να αντικατοπτρίζεται το πρόσημο του ψηφίου στην διάταξη των δυαδικών ψηφίων
* μέσω της συνάρτησης της ISO C `copysign()` (αντίστοιχη με την IEEE&nbsp;754 copySign πράξη) ώστε να αντιγραφεί το πρόσημο του μηδενός σε κάποιο μη αρνητικό αριθμό
* μέσω της μακροεντολής της ISO C `signbit()` (αντίστοιχη με την IEEE&nbsp;754 isSignMinus πράξη) η οποία επιστρέφει true ή false ανάλογα με το αν έχει τεθεί το πρόσημο του αριθμού
* λαμβάνοντας το αντίστοιχο του μηδενός ώστε να βρεθεί είτε το 1/(+0)&nbsp;=&nbsp;+∞ ή 1/(−0)&nbsp;=&nbsp;−∞ (εάν δεν υπάρξει διαχείριση της διαίρεσης με το μηδέν από την διαχείριση σφαλμάτων).

Πέρα από τις παραπάνω μεθόδους, υπάρχουν γλώσσες προγραμματισμού οι οποίες διαθέτουν επιπλέον τελεστές ώστε να διακρίνουν μεταξύ των δύο διαφορετικών περιπτώσεων μηδενός, όπως για παράδειγμα στην μέθοδο *equals* της Java για την κλάση αριθμών `Double`.

## Επιστημονικές χρήσεις
Ανεπίσημα, το μηδέν με αρνητικό πρόσημο "−0" μερικές φορές χρησιμοποιείται για να υποδηλωθεί πως μια μικρή αρνητική τιμή έχει στρογγυλοποιηθεί στο μηδέν. Για παράδειγμα κατά την παράθεση θερμοκρασιών Κελσίου, το αρνητικό πρόσημο στο μηδέν σημαίνει πως η θερμοκρασία είναι κάτω από το σημείο όπου το νερό γίνεται πάγος.

Στην στατιστική μηχανική, μερικές φορές χρησιμοποιούνται αρνητικές θερμοκρασίες για την περιγραφή συστημάτων με αντιστροφή πληθυσμού, η οποία μπορεί να θεωρηθεί πως διαθέτει θερμοκρασία μεγαλύτερη από την θετική απειρότητα, καθώς ο συντελεστής της ενέργειας στην συνάρτηση της κατανομής πληθυσμού είναι −1/Θερμοκρασία. Στο πλαίσιο αυτό, η θερμοκρασία −0 αποτελεί θεωρητική θερμοκρασία η οποία είναι μεγαλύτερη από την οποιαδήποτε άλλη αρνητική θερμοκρασία, αντιστοιχεί στο θεωρητικό μέγιστο της αντιστροφής πληθυσμού, και είναι το αντίστροφο του +0.

## Παραπομπές


## Σχετική βιβλιογραφία

*  the changes in the Fortran `SIGN` function in Fortran 95 to accommodate negative zero
*  JScript's floating point type with negative zero by definition
*  representation of negative zero in the Java virtual machine
*  how to handle negative zero when comparing floating-point numbers
*  one's complement numbers on the UNIVAC 1100 family computers

Κατηγορία:Αρχιτεκτονική υπολογιστών
Κατηγορία:Δυαδικές πράξεις
Κατηγορία:Στατιστική μηχανική