3. Πρόσθεση και αφαίρεση δυαδικών αριθμών

Μη προσημασμένοι αριθμοί

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

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

Για την παράσταση του αποτελέσματος της πρόσθεσης απαιτούνται δυο bits. Το δεξιότερο bit ονομάζεται άθροισμα (sum) s και το πιο αριστερό bit, που παράγεται όταν οι προσθετέοι είναι ίσοι με 1, ονομάζεται κρατούμενο.

Μια πιο ενδιαφέρουσα περίπτωση προκύπτει όταν πρέπει να προστεθούν μεγαλύτεροι αριθμοί, οι οποίοι αποτελούνται από πολλά bits. Τότε είναι αναγκαία η πρόσθεση κάθε ζεύγους bits, σε κάθε θέση i, η οποία περιλαμβάνει και την πρόσθεση του κρατουμένου εισόδου (carry-in), που έχει προκύψει από την πρόσθεση των bits της προηγούμενης θέσης i-1.

Στο ακόλουθο σχήμα, φαίνεται ένα παράδειγμα της πράξης της πρόσθεσης δυαδικών αριθμών. Οι προσθετέοι είναι οι αριθμοί X=(01111)2 και Y=(01010)2 οι οποίοι είναι δυαδικοί αριθμοί που αποτελούνται από 5bits. Μετά την εκτέλεση της δυαδικής πρόσθεσης, το άθροισμα είναι S=X+Y=(11001)2

Το σχήμα, επίσης, δείχνει τα κρατούμενα που δημιουργούνται από την διαδικασία της πρόσθεσης. Για παράδειγμα, δημιουργείται κρατούμενο ίσο με 0 κατά την πρόσθεση του πρώτου από δεξιά ζεύγους bits, κρατούμενο 1 κατά την πρόσθεση του δεύτερου από δεξιά ζεύγους bits κ.ο.κ.

Προσημασμένοι αριθμοί

Προσημασμένοι αριθμοί, λέγονται εκείνοι που είναι θετικοί ή αρνητικοί αριθμοί. Στη συνηθισμένη αριθμητική, το πρόσημο ενός προσημασμένου δεκαδικού αριθμού, δείχνεται με τα σύμβολα ‘’+’’ ή ‘’-‘’ τα οποία τοποθετούνται αριστερά από το περισσότερο σημαντικό ψηφίο. Στο δυαδικό σύστημα το πρόσημο ενός αριθμού, δείχνεται από το αριστερότερο bit. Εάν ένας αριθμός είναι θετικός, το αριστερό του bit είναι το 0 και εάν είναι αρνητικός τίθεται ίσο με 1.

Επομένως στους προσημασμένους δυαδικούς αριθμούς με n bits, το αριστερό ψηφίο αντιπροσωπεύει το πρόσημο και τα υπόλοιπα n-1 ψηφία, αντιπροσωπεύουν το μέτρο του αριθμού. Στους μη προσημασμένους αριθμούς, όλα τα n bits του αριθμού είναι σημαντικά. Επομένως στους μη προσημασμένους αριθμούς, το MSB είναι το πρώτο από αριστερά ψηφίο του αριθμού, ενώ στους προσημασμένους αριθμούς τα σημαντικά ψηφία είναι n-1 και το MSB είναι το δεύτερο από αριστερά ψηφίο.

Αναπαράσταση αρνητικών αριθμών

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

Αναπαράσταση προσημασμένου μέτρου

Στην Αναπαράσταση Προσημασμένου Μέτρου, το αριστερότερο ψηφίο παριστάνει το πρόσημο του αριθμού, ενώ τα υπόλοιπα ψηφία αναπαριστούν το μέτρο του δυαδικού αριθμού. Αν το ψηφίο του προσήμου είναι 0, ο αριθμός είναι θετικός και αν το ψηφίο του προσήμου είναι 1, ο αριθμός είναι αρνητικός. Για να μετατρέψουμε ένα θετικό αριθμό σε αρνητικό, αντικαθιστούμε το ψηφίο του προσήμου («0») με το συμπλήρωμα του («1»)

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

Αναπαράσταση συμπληρώματος ως προς ένα

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

Το συμπλήρωμα ως προς ένα, βρίσκεται με την αντικατάσταση κάθε bit του αριθμού με το συμπλήρωμα του (το συμπλήρωμα του 0 είναι το 1 ενώ εκείνο του 1 είναι το 0). Παράδειγμα, το συμπλήρωμα ως προς ένα του θετικού αριθμού +7=0111 είναι ο -7=1000.

Η ευχέρεια των αριθμών συμπληρώματος ως προς ένα, έγκειται στην ευκολία στην οποία μπορούμε να υπολογίσουμε αρνητικούς αριθμούς. Η αφαίρεση γίνεται προσθέτοντας στον μειωτέο τον αντίστοιχο αρνητικό του αφαιρετέου Α – Β = Α + (-Β). Όμως η αφαίρεση γίνεται δύσκολη λόγω της ύπαρξης δυο αναπαραστάσεων του μηδενός. Για να λύσουμε αυτό το πρόβλημα χρησιμοποιούμε την αναπαράσταση ως προς δυο, η οποία απλοποιεί την αφαίρεση.

Αναπαράσταση συμπληρώματος ως προς δυο

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

Το συμπλήρωμα ως προς δυο, βρίσκεται προσθέτοντας το 1 στο συμπλήρωμα ως προς ένα του αριθμού. Παράδειγμα:  για τον θετικό αριθμό 7 έχουμε +7 = 0111 ενώ το συμπλήρωμα του ως προς ένα είναι 1000 και προσθέτοντας 1  παίρνουμε τον δυαδικό αριθμό 1001 που είναι η αναπαράσταση του αρνητικού αριθμού -7 ως συμπληρώμα ως προς δυο.

Ένας μνημονικός κανόνας για την εύρεση του συμπληρώματος ως προς δυο ενός αριθμού είναι ο εξής: Πηγαίνοντας από το λιγότερο σημαντικό ψηφίο (LSB) μέχρι και το πρώτο 1 που θα συναντήσουμε, έχουμε αυτά τα bits ως έχουν. Τα υπόλοιπα bits αντικαθίστανται από τα συμπληρώματα τους.

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

Πρόσθεση αριθμών γραμμένων στο συμπλήρωμα ως προς δυο

Στο ακόλουθο σχήμα φαίνεται η πρόσθεση αριθμών σε διάφορους συνδυασμούς όταν είναι γραμμένοι στο συμπλήρωμα ως προς δύο. Οι προσθέσεις 5+2=7 και (-5)+2=-3 γίνονται χωρίς πρόβλημα. Ο υπολογισμός της πράξης 5+(-2)=3 δημιουργεί τα σωστά τέσσερα bits και το αποτέλεσμα είναι 0011. Υπάρχει κρατούμενο εξόδου, το οποίο μπορεί να αγνοηθεί. Στην τέταρτη περίπτωση (-5)+(-2)=(-7) τα τέσσερα bits του αποτελέσματος, 1001, δίνουν το σωστό άθροισμα (-7). Και εδώ το κρατούμενο εξόδου που προκύπτει μπορεί να αγνοηθεί.

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

Αφαίρεση αριθμών γραμμένων στο συμπλήρωμα ως προς δυο

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

Η πράξη 5-(+2)=3 γίνεται προσδιορίζοντας καταρχήν το συμπλήρωμα ως προς δυο του αριθμού -2 το οποίο είναι 1110, και εκτελώντας την πράξη, προκύπτει ένα bit κρατουμένου, το οποίο αγνοείται και τελικά παίρνουμε το αποτέλεσμα +3 ή 0011 στο δυαδικό. Παρόμοια κατάσταση προκύπτει κατά την πράξη (-5)-(+2)=(-7). Στις υπόλοιπες δυο περιπτώσεις δεν προκύπτει bit κρατουμένου και το αποτέλεσμα είναι σωστό.

Στο παρακάτω σχήμα, φαίνεται ο «τροχός αριθμών» με τον οποίο οπτικοποιούμε τα παραπάνω παραδείγματα. Όλοι οι δυαδικοί αριθμοί σε συνδυασμούς 4bits τοποθετούνται σε ένα κύκλο, με τον τρόπο που φαίνεται στο σχήμα. Εδώ οι δυαδικοί αριθμοί, απεικονίζονται σε αναπαράσταση συμπληρώματος ως προς 2 μαζί με τους ισοδύναμους ακεραίους αριθμούς. Ο μεγαλύτερος θετικός αριθμός που αναπαρίσταται με τρία ψηφία για το μέτρο, είναι ο +7 = 23 – 1 ενώ ο μικρότερος αρνητικός αριθμός είναι ο -8 = -23.

Η πράξη της πρόσθεσης γίνεται εάν εντοπίσουμε τον πρώτο προσθετέο και κινηθούμε δεξιόστροφα κατά το ποσό του δεύτερου προσθετέου. Για παράδειγμα, η πράξη -5+2 υπολογίζεται εάν ξεκινήσουμε από τον αριθμό 1011 (=-5) και κινηθούμε δυο βήματα κατά τη δεξιόστροφη φορά, οπότε φθάνουμε στον αριθμό 1101 (=-3). Η αφαίρεση εκτελείται εάν κινηθούμε αριστερόστροφα, αντί δεξιόστροφα. Για παράδειγμα, η πράξη -5-(+2) εκτελείται εάν ξεκινήσουμε από τον αριθμό 1001 (=-5) και κινηθούμε δυο βήματα κατά την αριστερόστροφη φορά, οπότε θα φθάσουμε στον αριθμό 1001 (=-7).

Υπερχείλιση κατά τις Αριθμητικές Πράξεις

Υπερχείλιση έχουμε σε μια πράξη πρόσθεσης αριθμών, που παριστάνονται με το συμπλήρωμα ως προς δυο, όπου το αποτέλεσμα δεν χωρά στον καταχωρητή του αποτελέσματος. Όταν το άθροισμα δυο θετικών αριθμών δίνει αρνητικό αποτέλεσμα ή όταν το άθροισμα δυο αρνητικών αριθμών δίνει θετικό αποτέλεσμα έχουμε υπερχείλιση. Χρησιμοποιώντας τον «τροχό των αριθμών» του σχήματος βλέπουμε την αναπαράσταση της υπερχείλισης.

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

Όταν με την πρόσθεση ή την αφαίρεση διασχίζεται η διαχωριστική γραμμή μεταξύ των δυο τμημάτων, τότε έχουμε υπερχείλιση. Αυτό φαίνεται με δυο παραδείγματα 5+4  και -7-3. Στο πρώτο παράδειγμα ξεκινάμε από τη θέση που αναπαριστά το +5 και κινούμαστε κατά 4 θέσεις κατά τη φορά των δειχτών του ρολογιού. Το αποτέλεσμα είναι ο αριθμός -7 άρα έχουμε υπερχείλιση. Στο δεύτερο παράδειγμα ξεκινάμε από τη θέση που αναπαριστά το -7 και κινούμαστε κατά 3 θέσεις κατά την αντίθετη φορά των δειχτών του ρολογιού. Το αποτέλεσμα είναι ο αριθμός +6 άρα έχουμε υπερχείλιση.

Στο παρακάτω σχήμα, δείχνονται τέσσερις περιπτώσεις πρόσθεσης αριθμών μέτρου 7 και 2, οι οποίοι είναι γραμμένοι στο συμπλήρωμα ως προς δυο. Επειδή χρησιμοποιούμε τέσσερα bits για να τους εκφράσουμε, υπάρχουν τρία σημαντικά bits και ένα bit προσήμου. Όταν οι αριθμοί έχουν αντίθετα πρόσημα, τότε δεν προκύπτει υπερχείλιση. Εάν όμως οι δυο αριθμοί έχουν το ίδιο πρόσημο, τότε το μέτρο του αθροίσματος 9, δεν είναι δυνατό να παρασταθεί με τρία σημαντικά bits και επομένως προκύπτει υπερχείλιση.

Το κλειδί για τον προσδιορισμό της εμφάνισης υπερχείλισης ή όχι είναι το κρατούμενο εξόδου από τη θέση MSB που ονομάζεται στο σχήμα με το σύμβολο c3 και από τη θέση του bit προσήμου, που ονομάζεται c4. Στο σχήμα φαίνεται ότι προκύπτει υπερχείλιση όταν αυτά τα κρατούμενα εξόδου έχουν διαφορετικές τιμές, δηλαδή όταν c3=0 και c4=1 ή όταν c3=1 και c4=0. Σωστό άθροισμα παράγεται μόνο όταν αυτά έχουν την ίδια τιμή, δηλαδή όταν c3=c4=0 ή c3=c4=1. Αν c3=c4=0 δεν έχουμε κρατούμενο από τη θέση MSB αλλά ούτε από τη θέση προσήμου. Αν c3=c4=1 έχουμε κρατούμενο από τη θέση MSB καθώς και από τη θέση του bit προσήμου όπου το τελευταίο μπορεί να αγνοηθεί και το πρόσημο του αποτελέσματος δηλώνεται από το bit του προσήμου.