Κεφάλαιο 1.3 - 1.3.4 Πραγματικοί αριθμοί (reals)
Κεφάλαιο 1.3 - 1.3.4 Πραγματικοί αριθμοί (reals)
1.3.4 Πραγματικοί αριθμοί (reals)
Είναι ο τύπος δεδομένων που αποτελείται από αριθμούς που έχουν ακέραιο και κλασματικό μέρος. Για παράδειγμα ο αριθμός 24,3 είναι πραγματικός αριθμός, με ακέραιο μέρος το 24 και κλασματικό το 3/10.
Μετατροπή πραγματικών αριθμών από το δεκαδικό στο δυαδικό σύστημα
Η μετατροπή δεκαδικών αριθμών που έχουν ακέραιο και κλασματικό μέρος γίνεται χωριστά για το ακέραιο και το κλασματικό μέρος και στο τέλος τα “ενώνουμε” με το κόμμα μεταξύ τους. Το ακέραιο μέρος το διαχειριζόμαστε όπως μάθαμε πριν.
Βήμα 1: Πολλαπλασιάζουμε το κλασματικό μέρος με το 2.
Βήμα 2: Κρατάμε το ακέραιο μέρος του αποτελέσματος.
Βήμα 3: Πολλαπλασιάζουμε με το 2, μόνο το κλασματικό μέρος του προηγούμενου αποτελέσματος.
Βήμα 4: Επαναλαμβάνουμε τα βήματα 2 και 3 μέχρι να βρούμε κλασματικό μέρος = 0 ή να πετύχουμε την επιθυμητή ακρίβεια (συνήθως τα 8 bit).
Παράδειγμα 1: (49.425)10 = (?)2 με ακρίβεια 8 bit.
Αποτέλεσμα: η στήλη “Bit”, σε κανονική σειρά
Αποτέλεσμα: (49.425)10 = (110001.01101100)2
Παράδειγμα 2: (24.25)10 = (?)2 με κλασματικό μέρος = 0
Μετατροπή πραγματικών αριθμών από το δυαδικό στο δεκαδικό σύστημα
Παράδειγμα 1: (11001,101)2
Αποτέλεσμα: (11001,101)2 =(25,625)10
Για την παράστασή των πραγματικών αριθμών στο δυαδικό σύστημα χρειαζόμαστε:
– το πρόσημο
– τα ψηφία του αριθμού
– τη θέση της υποδιαστολής
Υπάρχουν δύο μέθοδοι παράστασης των πραγματικών αριθμών
· Μέθοδος σταθερής υποδιαστολής
· Μέθοδος κινητής υποδιαστολής
Μέθοδος σταθερής υποδιαστολής
Για την παράσταση των πραγματικών αριθμών µε μήκος n bits μοιράζουμε τα ψηφία του αριθμού στο ακέραιο και στο κλασματικό μέρος, δηλαδή τα n1 bits χρησιμοποιούνται για το ακέραιο μέρος του αριθμού και τα υπόλοιπα n2 bits για το κλασματικό μέρος του (n1 + n2 = n). Το αριστερότερο ψηφίο (MSB) διατίθεται για το πρόσημο του αριθμού.

Σε αυτή τη μέθοδο η θέση της υποδιαστολής είναι πάντα στην ίδια θέση για όλους τους αριθμούς. Αυτό όμως μας δημιουργεί πρόβλημα στην ακρίβεια και στο εύρος της αναπαράστασης των αριθμών.
Για να καταλάβουμε το πρόβλημα ας θεωρήσουμε έναν υπολογιστή που διαθέτει 8 bits για την αποθήκευση των πραγματικών αριθμών. Το πλέον αριστερό bit διατίθεται για το πρόσημο και η υποδιαστολή βρίσκεται δεξιά του 6ου bit, οπότε τα 6 bits χρησιμοποιούνται για το ακέραιο μέρος και 2 bits για το κλασματικό μέρος. Η παράσταση των αρνητικών αριθμών γίνεται µε το συμπλήρωμά ως προς 2.
Ο μεγαλύτερος θετικός αριθμός που μπορούμε να αποθηκεύσουμε είναι ο 011111,112 και είναι ο 31,7510.
Ο μικρότερος αρνητικός αριθμός που μπορούμε να αποθηκεύσουμε είναι ο 100000,002 και είναι ο - 3210.
Ο αριθμός 31,87510 αναπαρίσταται στο δυαδικό σαν 011111, 111 και επειδή έχουμε μόνο 2 bits για το κλασματικό μέρος, αποθηκεύεται σαν 011111,112 (31,7510). Με τον περιορισμό των δύο ψηφίων στο κλασματικό μέρος έχουμε απώλεια της ακρίβειας του αριθμού.
Αν θεωρούσαμε ότι η υποδιαστολή ήταν δεξιά του 5ου bit τότε θα είχαμε 5 bits για το ακέραιο μέρος και 3 bits για το κλασματικό. Ο αριθμός 31,87510 αναπαρίσταται στο δυαδικό σαν 011111, 111 και επειδή έχουμε μόνο 5 bits για το ακέραιο μέρος, αποθηκεύεται σαν 01111,1112 (15,87510). Τώρα η απώλεια ακρίβειας είναι πάνω από 50%.
Συμπεραίνουμε ότι αν και η πρώτη περίπτωση μας δίνει καλύτερη ακρίβεια μας περιορίζει στο εύρος των αριθμών. Αν θέλαμε να έχουμε και μεγάλο εύρος αριθμών και μεγάλη ακρίβεια, τότε ο αριθμών των δυαδικών ψηφίων που θα χρησιμοποιούσαμε θα ήταν πολύ μεγάλος. Η αύξηση του συνολικού αριθμού των bit που διατίθενται για την παράσταση αριθμών αυξάνει το εύρος, ενώ η αύξηση του αριθμού των bits που διατίθενται για το κλασματικό μέρος αυξάνει την ακρίβεια. Αυτό μας οδηγεί σε τεράστιες ανάγκες μνήμης με συνέπεια σε πολύ υψηλού κόστους υπολογιστικά συστήματα.
Μέθοδος κινητής υποδιαστολής
Για να ξεπεραστούν τα μειονεκτήματα της μεθόδου σταθερής υποδιαστολής που είδαμε παραπάνω, έπρεπε να βρεθεί ένας τρόπος παράστασης των πολύ μεγάλων αριθμών όπως και των πολύ μικρών κλασματικών όπου η θέση της υποδιαστολής δεν θα ήταν σταθερή αλλά θα μετακινείται για να μπορεί να προσαρμόζεται στις υπολογιστικές ανάγκες. Ο τρόπος αυτός παράστασης ονομάζεται μέθοδος κινητής υποδιαστολής και είναι η μέθοδος που χρησιμοποιείται κυρίως στους υπολογιστές.
Στο δεκαδικό σύστημα, όταν θέλουμε να γράψουμε έναν ακέραιο αριθμό με πολλά μηδενικά στα δεξιά του ή ένα κλασματικό αριθμό με πολλά μηδενικά αμέσως μετά την υποδιαστολή χρησιμοποιούμε τη μορφή όπου κάθε αριθμός γράφεται ως το γινόμενο ενός αριθμού από το 1 ως το 10 υψωμένο στην κατάλληλή δύναμη του 10.
Για παράδειγμα:
Ο αριθμός 1.800.000 μπορεί να γραφεί σαν 180 Χ 104 ή 18 Χ 105 ή 1,8 Χ 106
Ο αριθμός 0,00045 μπορεί να γραφεί σαν 45 Χ 10-5 ή 4,5 Χ 10-4 ή 0,45 Χ 10-3
Όπως είδαμε ένας αριθμός μπορεί να έχει περισσότερες της μιας εκθετικές παραστάσεις στο ίδιο αριθμητικό σύστημα.
Το ίδιο συμβαίνει και στο δυαδικό σύστημα, κάθε αριθμός μπορεί να γραφεί με πολλές εκθετικές παραστάσεις.
Για παράδειγμα:
Ο αριθμός 101,0112 σε εκθετική μορφή μπορεί να γραφτεί:
0,101011 Χ 23 ή
1,01011 Χ 22 ή
10,1011 Χ 21
Από τα παραπάνω συμπεραίνουμε ότι αν κάθε υπολογιστικό σύστημα υιοθετούσε διαφορετικό μοντέλο για τον τρόπο παράστασης του ίδιου αριθμού θα υπήρχε δυσκολία στη μεταφορά των δεδομένων μεταξύ τους. Συνήθως όταν υπάρχουν πολλές δυνατότητες επιλογών, τότε κάποια επιτροπή προτυποποίησης καλείται για να ορίσει κάποιο πρότυπο, το οποίο θα υιοθετηθεί από τους κατασκευαστές υπολογιστών για να λυθούν τα παραπάνω προβλήματα. Στην παράσταση κινητής υποδιαστολής τη λύση έδωσε το πρότυπο 754 της επιτροπής IEEE.
Το πρότυπο ΙΕΕΕ 754, καθορίζει δύο μορφές παράστασης των δυαδικών αριθμών κινητής υποδιαστολής, είτε με 32 (απλής ακρίβειας - single precision) είτε με 64 (διπλής ακρίβειας - double precision) δυαδικά ψηφία (bits).
Οι πραγματικοί αριθμοί αποτελούνται από τρία μέρη:
το 1ο μέρος είναι το πρόσημο που μπορεί να είναι είτε θετικό (τιμή 0) είτε
αρνητικό (τιμή 1).
Το 2ο μέρος είναι ο εκθέτης που ορίζει πόσες θέσεις πρέπει να μετακινηθεί η υποδιαστολή προς τ’ αριστερά ή τα δεξιά προκειμένου να σχηματιστεί ο αριθμός.
Το 3ο μέρος είναι ο συντελεστής και είναι το κλασματικό μέρος του αριθμού (mantissa).
Ένας δυαδικός αριθμός κινητής υποδιαστολής απλής ακρίβειας που υπακούει στο πρότυπο της Ι.Ε.Ε.Ε. διαθέτει ένα (1) bit για το πρόσημο, οκτώ (8) bits για τον εκθέτη και είκοσι τρία (23) bits για το συντελεστή.
Ένας δυαδικός αριθμός κινητής υποδιαστολής διπλής ακρίβειας που υπακούει στο πρότυπο της Ι.Ε.Ε.Ε. διαθέτει ένα (1) bit για το πρόσημο, έντεκα (11) bits για τον εκθέτη και πενήντα δύο (52) bits για το συντελεστή.
Το ΙΕΕΕ 754 ορίζει επίσης ότι, οι δυαδικοί αριθμοί θα πρέπει να διαμορφώνονται με τέτοιο τρόπο ώστε το ψηφίο που βρίσκεται αριστερά της υποδιαστολής (ακέραιο μέρος) πρέπει να είναι πάντοτε 1. Δηλαδή η μορφή των αριθμών που υποστηρίζει το πρότυπο είναι η 1,ΧΧΧ…2. Η διαδικασία αυτή αναφέρεται ως κανονικοποίηση.
Αφού πάντα αριστερά της υποδιαστολής υπάρχει το 1, συμπεραίνουμε ότι δε χρειάζεται να αποθηκεύεται αυτό το ψηφίο αλλά μπορεί να υπονοείται.
Στους αριθμούς απλής ακρίβειας για την αποθήκευση των 8 bit του εκθέτη προστίθεται στην τιμή του εκθέτη το +127.
Στους αριθμούς διπλής ακρίβειας για την αποθήκευση των 11 bit του εκθέτη προστίθεται στην τιμή του εκθέτη το +1023.