Τα ψηφιακά συστήματα χρησιμοποιούν σήματα (τάσεις ή ρεύματα) που έχουν δυο διακριτές τιμές και ηλεκτρονικά κυκλώματα που έχουν δυο σταθερές καταστάσεις, που τις παριστάνουμε με 0 και 1. Ένας δυαδικός αριθμός με n ψηφία, μπορεί να αναπαρασταθεί από n δυαδικά υποκυκλώματα, όπου το καθένα από αυτά μπορεί να δίνει σήμα εξόδου ισοδύναμο με το 0 ή το 1.
Τα ψηφιακά συστήματα, εκτός από τους δυαδικούς αριθμούς, αναπαριστούν και χειρίζονται πολλά άλλα διακριτά στοιχεία πληροφορίας. Κάθε διακριτό στοιχείο πληροφορίας, μπορεί να αναπαρασταθεί με τη χρήση ενός δυαδικού κώδικα. Ο κώδικας αυτός πρέπει να είναι στο δυαδικό σύστημα διότι μόνο τα ηλεκτρονικά κυκλώματα που αναπαριστούν και χειρίζονται ακολουθίες από 0 και 1 μπορούν να κατασκευαστούν οικονομικά για χρήση σε υπολογιστές.
Η χρήση του δυαδικού συστήματος στους κώδικες, απλώς αλλάζει τον τρόπο συμβολισμού και όχι τη σημασία των πληροφοριών που τα σύμβολα αναπαριστούν.
Ένας δυαδικός κώδικας με n bit, είναι μια ομάδα από n bit, η οποία μπορεί να έχει ένα από τους 2n διακριτούς συνδυασμούς των 1 και 0. Ο κάθε συνδυασμός αναπαριστά ένα στοιχείο του συνόλου πληροφορίας που κωδικοποιείται. Κάθε στοιχείο του συνόλου στοιχείων πληροφορίας πρέπει να αντιστοιχίζεται σε ένα μοναδικό συνδυασμό bit.
Για παράδειγμα, τα 10 δεκαδικά ψηφία είναι δυνατόν να κωδικοποιηθούν με 10bit και κάθε δεκαδικό ψηφίο να αντιστοιχεί σε ένα συνδυασμό από εννέα 0 και ένα 1. Π.χ. σε αυτό τον δυαδικό κώδικα, το ψηφίο 6 αντιστοιχεί στο συνδυασμό bit 0001000000
Ο κώδικας BCD
Σήμερα το δυαδικό σύστημα αρίθμησης είναι το πιο φυσικό σύστημα για ένα υπολογιστή. Οι περισσότεροι άνθρωποι, ωστόσο, έχουν συνηθίσει το δεκαδικό σύστημα. Για την επεξεργασία αριθμητικών δεδομένων απαιτείται η αποθήκευση δεκαδικών αριθμών στον υπολογιστή, ώστε να μπορούν στη συνέχεια να μετατραπούν σε δυαδικούς.
Επειδή ο υπολογιστής δέχεται μόνο δυαδικές τιμές, πρέπει να αναπαραστήσουμε τα δεκαδικά ψηφία με τη μορφή ενός δυαδικού κώδικα. Είναι δυνατόν, ακόμη, να εκτελέσουμε τις αριθμητικές πράξεις απευθείας στο δεκαδικό σύστημα, όταν οι δεκαδικοί αριθμοί αποθηκεύονται στον υπολογιστή σε κωδικοποιημένη μορφή.
Οποιοσδήποτε δυαδικός κώδικας θα έχει κάποιους αχρησιμοποίητους συνδυασμούς bit, εάν το πλήθος των προς κωδικοποίηση στοιχείων δεν είναι δύναμη του 2 ακριβώς. Τα 10 δεκαδικά ψηφία αποτελούν ένα τέτοιο σύνολο στοιχείων προς κωδικοποίηση. Ένας δυαδικός κώδικας που μπορεί να διακρίνει τα 10 στοιχεία (ψηφία) πρέπει να έχει τουλάχιστον τέσσερα bit. Στην περίπτωση αυτή ακριβώς 6 από τους 16 πιθανούς συνδυασμούς δεν θα χρησιμοποιηθούν.
Είναι προφανές ότι διαφορετικοί δυαδικοί κώδικες προκύπτουν, εάν δώσουμε σε τέσσερα bit 10 διαφορετικούς συνδυασμούς από 0 και 1. Ο κώδικας, ωστόσο, που χρησιμοποιείται πιο συχνά για τα δεκαδικά ψηφία είναι αυτός που προκύπτει από τη φυσική δυαδική αρίθμηση που φαίνεται στον πίνακα. Ο αντίστοιχος κώδικας ονομάζεται BCD. Είναι προφανές ότι και άλλοι δεκαδικοί κώδικες είναι δυνατοί.
Ο πίνακας παραθέτει τον κώδικα BCD για ένα δεκαδικό ψηφίο. Ένας αριθμός με k δεκαδικά ψηφία απαιτεί 4xk bit για την αναπαράσταση του σε BCD. Η κάθε ομάδα των 4 bit αντιστοιχεί και σε ένα δεκαδικό ψηφίο. Ένας δεκαδικός αριθμός σε BCD έχει την ίδια τιμή με το δυαδικό αριθμό που αναπαριστάνεται, με τον ίδιο συνδυασμό bit, μόνο όταν ο αριθμός σε BCD έχει την τιμή μεταξύ 0 και 9. Η τιμή ενός αριθμού BCD που είναι μεγαλύτερος από 9 διαφέρει από αυτή του δυαδικού που αναπαρίσταται από τον ίδιο συνδυασμό 1 και 0. Επιπλέον, οι δυαδικοί συνδυασμοί 1010 εως 1111 δεν χρησιμοποιούνται στο σύστημα BCD και, επομένως, δεν έχουν νόημα στον κώδικα αυτό.
Για παράδειγμα θεωρήστε τον δεκαδικό 185 και τις αναπαραστάσεις του στο BCD και στο δυαδικό σύστημα:
(185)10 = (0001 1000 0101)BCD = (10111001)2
Η αναπαράσταση σε BCD χρειάζεται 12 bit για την κωδικοποίηση των χαρακτήρων της δεκαδικής μορφής, ενώ ο ισοδύναμος δυαδικός αριθμός χρειάζεται μόνο 8 bit. Είναι προφανές ότι η αναπαράσταση ενός αριθμού σε BCD χρειάζεται περισσότερα bit από την αντίστοιχη δυαδική αναπαράσταση. Το πλεονέκτημα, ωστόσο, της χρήσης δεκαδικών αριθμών είναι ότι τα δεδομένα εισόδου και εξόδου του υπολογιστή παράγονται από ανθρώπους που χρησιμοποιούν το δεκαδικό σύστημα.
Πρόσθεση στον κώδικα BCD
Θεωρήστε την πρόσθεση δυο δεκαδικών αριθμών στο BCD και ενός κρατουμένου, το οποίο έχει πιθανώς προκύψει από ένα προηγούμενο, λιγότερο σημαντικό ζεύγος ψηφίων. Επειδή κανένα ψηφίο δεν υπερβαίνει το 9, το άθροισμα δεν μπορεί να είναι μεγαλύτερο από 9+9+1=19, όπου το 1 είναι πιθανό κρατούμενο. Υποθέστε ότι προσθέτουμε τα ψηφία BCD σαν να ήταν δυαδικοί αριθμοί. Τότε, το δυαδικό άθροισμα παίρνει τιμή που ανήκει στο κλειστό διάστημα 0 έως και 19. Στο δυαδικό σύστημα, το διάστημα αυτό είναι από 0000 έως και 10011, ενώ στο BCD σύστημα είναι από 0000 έως 1 1001, όπου, στον τελευταίο αριθμό, το πρώτο από αριστερά 1 είναι το προκύπτον κρατούμενο και τα επόμενα τέσσερα bit είναι το BCD άθροισμα.
Όταν το δυαδικό αποτέλεσμα ισούται με 1001 (χωρίς κρατούμενο) ή μικρότερο από αυτό, το δυαδικό άθροισμα αναπαριστά, επίσης, σωστά το αντίστοιχο ψηφίο BCD. Όμως, όταν το δυαδικό άθροισμα ισούται με 1010 ή μεγαλύτερο από αυτό, το αποτέλεσμα δεν αναπαριστά ψηφίο BCD. Χρειάζεται να προσθέσουμε το 6 = (0110)2 στο δυαδικό άθροισμα, ώστε το δυαδικό άθροισμα να μετατραπεί στο σωστό BCD ψηφίο και να παραχθεί επιπλέον ένα σωστό BCD κρατούμενο. Αυτό συμβαίνει επειδή ένα κρατούμενο στην πλέον σημαντική θέση bit του δυαδικού αθροίσματος και ένα δεκαδικό κρατούμενο διαφέρουν κατά 16-10=6. Θεωρήστε τις επόμενες τρεις προσθέσεις BCD.
4 0100 4 0100 8 1000
+5 +0101 +8 +1000 +9 1001
----- -- ----- -- ----
9 1001 12 1100 17 10001
+0110 +0110
----- -----
10010 10111
Σε κάθε περίπτωση, τα δυο ψηφία BCD προστίθενται σαν να ήταν δυαδικοί αριθμοί. Εάν το δυαδικό άθροισμα είναι μεγαλύτερο ή ίσο με 1010, προσθέτουμε 0110 για να πάρουμε το σωστό άθροισμα BCD και ένα πιθανό BCD κρατούμενο. Στο πρώτο παράδειγμα, το άθροισμα ισούται με 9 και είναι το σωστό άθροισμα BCD Στο δεύτερο παράδειγμα, το δυαδικό άθροισμα παράγει ένα άκυρο ψηφίο BCD. Η επιπλέον πρόσθεση του 0110 παράγει το σωστό άθροισμα BCD, το 0010 και ένα κρατούμενο. Στο τρίτο παράδειγμα, το δυαδικό άθροισμα παράγει ένα κρατούμενο. Αυτό σημαίνει ότι το άθροισμα είναι μεγαλύτερο του 16 ή ίσο με αυτό. Παρόλο που τα τέσσερα bit του αθροίσματος αντιστοιχούν σε δυαδικό αριθμό μικρότερο του 1001, εξακολουθεί να υπάρχει ανάγκη διόρθωσης του δυαδικού αθροίσματος λόγω του προκύψαντος κρατουμένου. Η πρόσθεση του 0110 στο δυαδικό άθροισμα μας δίνει το σωστό άθροισμα BCD 0111 (τα ψηφίο 7) και ένα κρατούμενο BCD (το ψηφίο 1).