stoxoi_134.jpg
overflow1.jpg
Πηγή: http://xkcd.com/571/
Με όποιον τρόπο κι αν παριστάνονται οι αριθμοί σε ένα υπολογιστή, υπάρχει πάντα ένα ανώτερο και ένα κατώτερο όριο στο μεγεθός τους. Τα όρια εξαρτώνται από:
  • τον τρόπο παράστασης που χρησιμοποιείται
  • τον αριθμό των δυαδικών ψηφίων (bits) που διατίθεται για τους αριθμούς αυτούς

Ο όρος υπερχείλιση (overflow) χρησιμοποιείται για να περιγράψει την περίπτωση που το αποτέλεσμα μιας πράξης βρίσκεται εκτός αυτών των ορίων (εκτός του εύρους τιμών).
Για παράδειγμα, αν ένας υπολογιστής χρησιμοποιεί n=8 bits για την αποθήκευση των θετικών ακεραίων (μη προσημασμένοι ακέραιοι), τότε ο μεγαλύτερος αριθμός που μπορεί να αποθηκευτεί είναι ο (11111111)2=(255)10. Κάθε προσπάθεια αποθήκευσης μεγαλύτερου ακεραίου από το 255 -χρησιμοποιώντας 8 δυαδικά ψηφία- θα οδηγήσει σε υπερχείλιση.

Στην αριθμητική με παράσταση συμπληρώματος ως προς δύο, η υπερχείλιση συνδέεται με τη μεταφορά κρατούμενων από και προς τη θέση του ψηφίου μέγιστης σημαντικότητας (MSB), κατά τη διάρκεια της πρόσθεσης.

Δραστηριότητα
- Στα παρακάτω παραδείγματα χρησιμοποιούνται αριθμοί με παράσταση συμπληρώματος ως προς 2 και αριθμό δυαδικών ψηφίων n=6 bits. Μελετήστε προσεπτικά τα παραδείγματα και καταγράψτε τα συμπεράσματά σας.
overflow_examples.jpg

Τα περισσότερα υπολογιστικά συστήματα χρησιμοποιούν διαφορετικό πλήθος ψηφίων για την παράσταση κάθε τύπου αριθμών, έτσι ώστε να μειώσουν την πιθανότητα σφαλμάτων από υπερχείλιση (και ταυτόχρονα να εξοικονομήσουν χώρο, εφόσον δεν χρησιμοποιούν για όλους τους αριθμούς το ίδιο μεγάλο πλήθος ψηφίων). Οι προγραμματιστές επιλέγουν για κάθε αριθμό που χρειάζονται τον κατάλληλο τύπο.
datatype table.png
Πίνακας: Μέγεθος και εύρος τιμών στη C++

Πηγή: Datatypes in C++



Πηγή:
  • Bishop, P. Επιστήμη και Τεχνολογία Υπολογιστών, Πανεπιστημιακές Εκδόσεις ΕΜΠ, Αθήνα 2000