Skip to main content

Τι είναι μια αριθμητική υπερχείλιση;

Μια αριθμητική υπερχείλιση είναι μια προϋπόθεση που εμφανίζεται στους υπολογιστές, ειδικά στον τομέα του προγραμματισμού υπολογιστών, όταν ένας υπολογισμός ή λειτουργία αποδίδει αποτέλεσμα που είναι πολύ μεγάλο για το σύστημα αποθήκευσης ή την εγγραφή να χειριστεί.Η υπερχείλιση μπορεί επίσης να αναφέρεται στο ποσό με το δεδομένο αποτέλεσμα υπερβαίνει τη μνήμη που προορίζεται για αποθήκευση.Σε ορισμένες περιπτώσεις, η υπερχείλιση δεδομένων μπορεί να αποθηκευτεί σε άλλη θέση αποθήκευσης δεδομένων.Σε άλλες, μπορεί να προκαλέσει τη συντριβή ενός προγράμματος, να τρέξει αργά ή να αποφέρει ανακριβή αποτελέσματα.Η αριθμητική υπερχείλιση δεν περιορίζεται σε πλήρεις προσωπικούς ή επιχειρηματικούς υπολογιστές, καθώς οι απλοί φορητοί υπολογιστές και οι συσκευές επικοινωνίας έχουν επίσης όρια στο μέγεθος των τιμών που μπορούν να χειριστούν., καθώς τείνουν να είναι πολύ συνηθισμένα σφάλματα προγραμματισμού που πρέπει να λάβουν.Υπάρχουν πολλές διαφορετικές μέθοδοι για την παράδοση αριθμητικής υπερχείλισης.Ο σχεδιασμός του προγράμματος διαδραματίζει πολύ σημαντικό ρόλο.Ένα καλά σχεδιασμένο πρόγραμμα που χρησιμοποιεί συνεπείς και διορθωτικούς τύπους δεδομένων και μήκη δεν πρέπει να παρουσιάζουν τέτοια σφάλματα.Εάν τεθεί μεγάλη προσοχή στον έλεγχο της σειράς των εργασιών και τη διατήρηση όλων των συνεπών, τα σφάλματα υπερχείλισης μπορούν να αποφευχθούν εξ ολοκλήρου.

Ένας άλλος τρόπος αντιμετώπισης των αριθμητικών σφαλμάτων υπερχείλισης είναι να σπάσουν τις εργασίες σε μικρότερα βήματα.Είναι συχνά ευκολότερο για ένα σύστημα να χειρίζεται απλές, μικρές λειτουργίες από τις πολύπλοκες λειτουργίες που περιλαμβάνουν μεγάλους αριθμούς και υπερβολικούς υπολογισμούς.Όταν δεν είναι εξαιρετικά σημαντικό ο αριθμός που επιστρέφεται είναι εντελώς ακριβής, μερικές φορές θα αρκεί να γράψει το πρόγραμμα με τέτοιο τρόπο ώστε να ειδοποιεί τον χρήστη του σφάλματος υπερχείλισης, αλλά επιστρέφει μια τιμή ούτως ή άλλως.Ο πιο συνηθισμένος τρόπος χειρισμού ενός αριθμητικού σφάλματος υπερχείλισης είναι να το αγνοήσετε εντελώς.Ενώ αυτό είναι συνήθως αβλαβές, μπορεί να δώσει λανθασμένα αποτελέσματα και μπορεί να θέσει σε κίνδυνο τη χρησιμότητα και την αποτελεσματικότητα του προγράμματος.

Ariane 5 Flight 501 απεικονίζει σαφώς τους κινδύνους των αριθμητικών σφαλμάτων υπερχείλισης.Η πτήση ήταν η πρώτη δοκιμαστική διαδρομή του ευρωπαϊκού συστήματος εκτόξευσης Ariane 5, το οποίο επαναχρησιμοποιούσε μεγάλο μέρος του κώδικα από το παλιό σύστημα Ariane 4.Η επιτάχυνση του Ariane 5 ήταν, ωστόσο, σημαντικά μεγαλύτερη από αυτή της Ariane 4 και ο προγραμματισμός δεν ήταν επαρκής για να χειριστεί τις μεγαλύτερες τιμές που απαιτούνται.Ως εκ τούτου, ο πυραύλος άφησε την επιδιωκόμενη διαδρομή πτήσης 37 δευτερόλεπτα μετά την εκτόξευση και έπρεπε να καταστραφεί.Αυτό το απλό σφάλμα προγραμματισμού κοστίζει εκατοντάδες εκατομμύρια δολάρια ΗΠΑ.