1.3.3 Προσημασμένοι ακέραιοι


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

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

(i)                  Προσηµασµένο μέτρο (signed magnitude),

(ii)                Συμπλήρωμα ως προς 1 (1's complement),

(iii)               Συμπλήρωμα ως προς 2 (2's complement).

Η μορφή συμπληρώματος ως προς 2 είναι εκείνη που χρησιμοποιείται στους υπολογιστές γιατί απλοποιεί την εκτέλεση των αριθμητικών πράξεων και για τους θετικούς και για τους αρνητικούς αριθμούς.

Προσηµασµένο μέτρο (signed magnitude)

Ο πιο συνηθισμένος τρόπος συμβολισμού ενός αρνητικού αριθμού, στο δεκαδικό σύστημα, είναι με την προσθήκη του συμβόλου "μείον" στην αρχή του αριθμού, π.χ. -345. Ο συμβολισμός αυτός χρησιμοποιεί τα ψηφία για να σχηματίσουν το μέτρο ή την απόλυτη τιμή (value) του αριθμού, και ένα ξεχωριστό σύμβολο για να δηλώσει το πρόσημο του (sign). Αυτή η μέθοδος αναπαράστασης των αριθμών ονομάζεται μέθοδος του προσημασμένου μέτρου. Επειδή το πρόσημο μπορεί να πάρει μόνο δύο δυνατές τιμές(+ και -), μπορεί να παρασταθεί από ένα μοναδικό bit. Οι υπολογιστές χρησιμοποιούν το πρώτο bit από αριστερά (most significant bit-MSB) των δυαδικών αριθμών για την δήλωση του πρόσημου, και τα υπόλοιπα bits υποδηλώνουν το μέγεθος του αριθμού. Αν το MSB είναι μηδέν, ο αριθμός είναι θετικός και αν το MSB είναι μονάδα, ο αριθμός είναι αρνητικός. Σύμφωνα µε αυτόν τον τρόπο παράστασης ο αριθμός (+5)10 θα γράφεται στο δυαδικό ως (101)2 µε ακρίβεια τριών bits ή (0101)2 µε ακρίβεια τεσσάρων bits, ενώ ο αριθμός (-5)10 θα γράφεται ως (1101)2 µε ακρίβεια τεσσάρων bits.

Αυτή η μέθοδος παράστασης είναι αρκετά βολική για εμάς, αφού οι αριθμοί, ανεξάρτητα από το πρόσημο τους, γράφονται με τον ίδιο τρόπο. Είναι όμως δύσχρηστη για τον υπολογιστή γιατί γίνεται σπατάλη δυαδικών ψηφίων αφού περιορίζει στο μισό το μέγεθος του αριθμού. Ένας μη προσημασμένος αριθμός των 8 bits παίρνει τιμές από το 0 έως το 255. Αν ο ίδιος αριθμός είναι προσημασμένος, τότε η μεγαλύτερη δυνατή τιμή του είναι το +127. Ένας δεύτερος λόγος που δεν χρησιμοποιείται αυτή η μέθοδος στους υπολογιστές είναι ότι η πρόσθεση δύο θετικών αριθμών ή δύο αρνητικών αριθμών είναι απλή, όμως όταν τα πρόσημα των δύο αριθμών δεν είναι τα ίδια τότε η πράξη γίνεται πολύπλοκη, επειδή τα υπολογιστικά συστήματα δε διαθέτουν ηλεκτρονικά κυκλώματα που να εκτελούν την πράξη της αφαίρεσης. Αυτό θα μπορούσε να λυθεί αν, σύμφωνα με τους νόμους της αριθμητικής, η αφαίρεση γινόταν μέσω της πρόσθεσης, δηλαδή 9-4=9+(-4). Όμως αν χρησιμοποιήσουμε τη μέθοδο του προσημασμένου μέτρου, το αποτέλεσμα που προκύπτει είναι εσφαλμένο όπως φαίνεται παρακάτω:


Πρέπει να βρούμε εκείνη τη μέθοδο παράστασης των αρνητικών αριθμών, ώστε να καταλήγουμε στο επιθυμητό αποτέλεσμα.

Συμπλήρωμα ως προς 1 (1's complement)

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

Για παράδειγμα, αν αντιστρέψουμε τα ψηφία του αριθμού 011010102 (10610), προκύπτει ο αριθμός 100101012 (-10610).


Εικόνα 1.3.3. Συμπλήρωμα ως προς 1 αριθμών μήκους 4

Στην παραπάνω εικόνα φαίνεται η αναπαράσταση του συμπληρώματος ως προς 1 των αριθμών των 4 bit. Όλοι οι αρνητικοί αριθμοί έχουν 1 στο πρόσημο τους, ενώ οι θετικοί αριθμοί έχουν 0. Παρατηρούμε όμως ότι το μηδέν έχει δυο αναπαραστάσεις, την 0000 και την 1111. Λόγω της ύπαρξης δύο αναπαραστάσεων του μηδενός, αυτή η μέθοδος δε χρησιμοποιείται στους υπολογιστές.

Συμπλήρωμα ως προς 2 (2's complement)

Το συμπλήρωμα ως προς 2 (2s' complement) ενός δυαδικού αριθμού ορίζεται ως η τιμή που παίρνουμε όταν αντιστρέφουμε όλα τα ψηφία (bits) του δυαδικού αριθμού (αλλάζοντας τα 0 σε 1 και το αντίστροφο - το 0 είναι το συμπλήρωμα του 1 και το αντίθετο) και στην συνέχεια προσθέτουμε μια μονάδα.

Ισχύει ότι αν ο μειωτέος είναι ≥ αφαιρετέου τότε παραλείπουμε το τελικό κρατούμενο στο αποτέλεσμα.

Ισχύει ότι αν ο μειωτέος είναι < αφαιρετέου δεν προκύπτει κρατούμενο.

Αυτή η μέθοδος εξαλείφει το πρόβλημα της πολλαπλής παράστασης του μηδενός. Αφού, στην αριθμητική του συμπληρώματος ως προς 2 το κρατούμενο αγνοείται, το συμπλήρωμα του 000000002 ως προς 2 είναι πάλι το 000000002. Επομένως, η παράσταση του μηδενός είναι μοναδική.

Για παράδειγμα, η δυαδική μορφή του 4 είναι το 000001002.

Η αντιστροφή των ψηφίων του δίνει τον                      111110112.

Το συμπλήρωμα του δύο είναι ο δυαδικός αριθμός, που προκύπτει από την πρόσθεση

111110112+ 1 = 111111002 και ισούται με τον αρνητικό δεκαδικό -410.

Η λύση του προβλήματος της αφαίρεσης 910-410 με τη μέθοδο αυτή είναι:

    

Βλέπουμε ότι το κρατούμενο είναι μονάδα και τα υπόλοιπα 8 bits δίνουν τιμή ίση με 5. Ο μειωτέος είναι ≥ αφαιρετέου 9>4) οπότε το κρατούμενο αγνοείται.

 Παραδείγματα

1.    Χρησιμοποιώντας το συμπλήρωμα ως προς 2, κάνετε την αφαίρεση: 10101002 - 10000112

ισχύει ότι M ≥ Α  παραλείπουμε το τελικό κρατούμενο οπότε το αποτέλεσμα είναι: 00100012

 2.    Χρησιμοποιώντας το συμπλήρωμα ως προς 2, κάνετε την αφαίρεση: 10000112 - 10101002

ισχύει ότι M < Α δεν προκύπτει κρατούμενο και το αποτέλεσμα είναι: 11011112

3.    Προσθέσεις με τη μέθοδο Συμπληρώματος ως προς 2

                                

 Στον παρακάτω πίνακα φαίνεται ο υπολογισμός της αξίας των δυαδικών αριθμών με 8 bits σε μορφή συμπληρώματος ως προς 2.


 Κανόνας υπερχείλισης στην παράσταση συμπληρώματος ως προς δύο:

Αν προστεθούν δυο αριθμοί με το ίδιο πρόσημο, τότε προκύπτει υπερχείλιση αν και μόνο αν το αποτέλεσμα έχει το αντίθετο πρόσημο.

Οι υπολογιστές διαθέτουν τους κατάλληλους μηχανισμούς για να εντοπίζουν τις περιπτώσεις όπου σε μία αριθμητική πράξη προκαλείται υπερχείλιση.

Ο Ευρωπαϊκός πύραυλος Ariane 5, κόστισε 7 δισεκατομμύρια δολάρια και εκτοξεύτηκε στις 4 Ιουνίου 1996, απέκλινε από την πορεία του 40 δευτερόλεπτα μετά από την εκτόξευση του, κόπηκε στα δύο και εξερράγη.

Το ατύχημα προκλήθηκε όταν ο υπολογιστής που έλεγχε τον πύραυλο υπερχείλισε το εύρος (16 bit) των προσημασμένων τιμών του και κατέρρευσε. Το λογισμικό απέτυχε γιατί δεν περιλάμβανε διαχειριστή εξαιρέσεων.

 


Τελευταία τροποποίηση: Τετάρτη, 3 Ιανουαρίου 2024, 4:59 PM