Πώς από το ωραιότατο δεκαδικό σύστημα αρίθμησης πηγαίνουμε σ’ αυτό το δυαδικό; Πώς γυρίζουμε πάλι πίσω; Με κείνο το δεκαεξαδικό, τι παίζει επιτέλους; Αλήθεια, το δεκαδικό δεν είναι μια χαρά από μόνο του; Τι στο καλό χρειάζονται όλα τ’ άλλα συστήματα αρίθμησης;
Στο παρόν άρθρο αντιμετωπίζουμε αυτά και παρόμοια, αγωνιώδη ερωτήματα της ζωής, συζητώντας για την έννοια του συστήματος αρίθμησης, παρουσιάζοντας τα πιο δημοφιλή εξ αυτών και δείχνοντας πώς κάνουμε μετατροπές από το ένα σύστημα στο άλλο. Αληθινή, ατόφια διασκέδαση για math geeks, δηλαδή, με πληροφορίες που, παρεμπιπτόντως, κρίνονται ως απαραίτητες για όσους διαβάζουν ένα περιοδικό με τον τίτλο “deltaHacker” στο εξώφυλλό του ;)
Τι είναι ένα σύστημα αρίθμησης
Πώς προκύπτουν οι αξίες;
Τα θεσιακά συστήματα αρίθμησης από κοντά
Μετατροπές ακεραίων στο δεκαδικό
Μετατροπές αριθμών με υποδιαστολή στο δεκαδικό
Μετατροπές από το δεκαδικό σε όλα τα άλλα!
Η αγάπη των υπολογιστών προς το δυαδικό και κάποιες άλλες, αγαστές σχέσεις
Τι είναι ένα σύστημα αρίθμησης
Με το δεκαδικό (decimal) σύστημα αρίθμησης και τα δέκα του ψηφία, αυτά από το 0 έως και το 9 συμπεριλαμβανομένων, εξοικειωνόμαστε πριν ακόμα πάμε στο δημοτικό και γενικά το χρησιμοποιούμε σ’ όλη μας τη ζωή. Η τεράστια αυτή εξοικείωση και άνεση που έχουμε με το δεκαδικό δεν σημαίνει πως δεν υπάρχουν κι άλλα συστήματα αρίθμησης. Πράγματι, κάθε φίλος των υπολογιστών και της τεχνολογίας γενικότερα έχει τουλάχιστον ακούσει για το δυαδικό (binary), το οκταδικό (octal) αλλά και το δεκαεξαδικό (hexadecimal) σύστημα αρίθμησης.
Μιλώντας γενικά, ένα σύστημα αρίθμησης αποτελεί μια συμφωνία ώστε να αντιστοιχίζεται νόημα ή καλύτερα αξία (value) κατά τρόπο μοναδικό σε ακολουθίες ψηφίων. Έτσι, στα πλαίσια ενός συγκεκριμένου συστήματος αρίθμησης είναι διαφορετική η αξία που αντιπροσωπεύει, π.χ., η ακολουθία 111: στο δεκαδικό είναι εκατόν έντεκα, στο δεκαεξαδικό διακόσια εβδομήντα τρία, στο οκταδικό εβδομήντα τρία και στο δυαδικό επτά.
Πώς προκύπτουν οι αξίες;
Για να απαντήσουμε στο ερώτημα οφείλουμε πρώτα να ξεκαθαρίσουμε ότι υπάρχουν διάφορα είδη συστημάτων αρίθμησης. Το πιο χρήσιμο και βολικό απ’ αυτά είναι το λεγόμενο θεσιακό (positional). Σε ένα θεσιακό σύστημα αρίθμησης, η ίδια η θέση ενός ψηφίου έχει σημασία για το βάρος (weight) του και τελικά διαμορφώνει την αξία της ακολουθίας στην οποία ανήκει το υπό συζήτηση ψηφίο. Τα συστήματα αρίθμησης που αναφέραμε (δεκαεξαδικό, δεκαδικό, οκταδικό και δυαδικό) είναι όλα τους θεσιακά.
Ας πάρουμε, π.χ., τις ακολουθίες ψηφίων 009, 090 και 900, όλες τους με το ίδιο μήκος (3) και από το ίδιο θεσιακό σύστημα αρίθμησης: το δεκαδικό. Η θέση του 9 σε καθεμία απ’ αυτές τις ακολουθίες διαφέρει, με αποτέλεσμα οι αξίες των τριών ακολουθιών να είναι εννέα, ενενήντα και εννιακόσια αντίστοιχα. Σε ένα άλλο παράδειγμα, ας πάρουμε τις ακολουθίες 011, 101 και 110 — αυτή τη φορά από το δυαδικό σύστημα αρίθμησης. Εδώ έχουμε συνδυασμούς από δύο άσους κι ένα μηδενικό. Σε κάθε ακολουθία οι θέσεις των ψηφίων διαφέρουν, οπότε από τη στιγμή που έχουμε να κάνουμε με θεσιακό σύστημα αρίθμησης ουσιαστικά μιλάμε για τρεις διαφορετικές αξίες: τρία, πέντε και έξι αντίστοιχα.
Εξακολουθούμε να μην έχουμε δείξει πώς προκύπτουν οι αξίες. Θα το κάνουμε σε πολύ λίγο, αφού πρώτα ορίσουμε ακριβέστερα την έννοια του θεσιακού συστήματος αρίθμησης. Μετά, το πώς πώς προκύπτουν οι αξίες θα είναι μάλλον προφανές ;)
Τα θεσιακά συστήματα αρίθμησης από κοντά
Σε ένα θεσιακό σύστημα αρίθμησης με βάση , όπου το
είναι ένας ακέραιος μεγαλύτερος του 1 που ονομάζεται βάση, για την αναπαράσταση των αριθμών χρησιμοποιούνται
στο πλήθος ψηφία ή γενικά σύμβολα, τα οποία αντιστοιχούν στους πρώτους
στο πλήθος φυσικούς αριθμούς ξεκινώντας από το 0.
Ακούγεται παράξενος ο ορισμός; Δείτε μερικά παραδείγματα και θα διαπιστώσετε ότι δεν είναι και τόσο.
Για έχουμε το θεσιακό σύστημα αρίθμησης με βάση 2 ή απλά δυαδικό σύστημα αρίθμησης και για την αναπαράσταση των αριθμών χρησιμοποιούνται τα ψηφία 0 και 1.
Για έχουμε το το θεσιακό σύστημα αρίθμησης με βάση 8 ή απλά οκταδικό σύστημα αρίθμησης και για την αναπαράσταση των αριθμών χρησιμοποιούνται τα ψηφία 0, 1, 2, 3, 4, 5, 6 και 7.
Για έχουμε το δημοφιλέστατο (;) στο σύμπαν θεσιακό σύστημα αρίθμησης με βάση 10 ή απλά δεκαδικό σύστημα αρίθμησης. Για την αναπαράσταση των αριθμών χρησιμοποιούνται τα ψηφία 0, 1, 2, 3, 4, 5, 6, 7, 8 και 9.
Για έχουμε το το θεσιακό σύστημα αρίθμησης με βάση 16 ή απλά δεκαεξαδικό σύστημα αρίθμησης και για την αναπαράσταση των αριθμών χρησιμοποιούνται τα ψηφία 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E και F (16 στο πλήθος), τα οποία αντιστοιχούν στους 16 πρώτους φυσικούς αριθμούς ξεκινώντας από το 0, δηλαδή στους 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 και 15.
Επειδή μιλάμε για θεσιακά συστήματα αρίθμησης, είναι προφανές ότι η αξία ενός αριθμού εξαρτάται από τις θέσεις στις οποίες βρίσκονται τα διάφορα ψηφία του. Γενικά, λοιπόν, σε ένα θεσιακό σύστημα με βάση οι θετικοί ακέραιοι γράφονται ως
όπου φυσικά
και η αξία τους είναι
Ισχύει, λοιπόν, ότι
Όταν εννοείται από τα συμφραζόμενα, η βάση παραλείπεται από τη γραφή ενός αριθμού. Έτσι, όταν μιλάμε για δεκαδικούς αριθμούς γράφουμε απλά 129 αντί για
, όταν μιλάμε για δυαδικούς γράφουμε 1101 αντί για
, όταν αναφερόμαστε σε δεκαεξαδικούς γράφουμε 1AFB αντί για
κ.ο.κ.
Μετατροπές ακεραίων στο δεκαδικό
Ας δούμε μερικά παραδείγματα υπολογισμού, βρίσκοντας τις αξίες αριθμών από διάφορα συστήματα αρίθμησης. Ουσιαστικά, αυτό που κάνουμε στη συνέχεια είναι να μετατρέψουμε κάποιους αριθμούς στους ισοδύναμούς τους στο δεκαδικό σύστημα.
Παράδειγμα υπολογισμού αξίας αριθμού από το δεκαδικό σύστημα δεν δίνουμε, μιας και όλοι είμαστε εξοικειωμένοι μ’ αυτούς. Ορισμένοι τιτάνες προγραμματιστές είναι το ίδιο καλά εξοικειωμένοι με το δεκαεξαδικό ή το δυαδικό σύστημα, όπως εξάλλου αποδεικνύουν και προϊόντα σαν αυτό. Αλλά ας μην ξεφεύγουμε :)
Μετατροπές αριθμών με υποδιαστολή στο δεκαδικό
Μέχρι τώρα δείξαμε πώς υπολογίζονται οι αξίες ακεραίων αριθμών από διάφορα συστήματα αρίθμησης. Παρόμοια υπολογίζονται και οι αξίες αριθμών με υποδιαστολή, οι οποίοι έχουν πεπερασμένου ή άπειρου πλήθους ψηφία στα δεξιά της. Αναλυτικότερα, συμβολίζοντας την υποδιαστολή με μια τελεία, η αξία ενός αριθμού από το σύστημα αρίθμησης με βάση είναι:
όπου
Είχατε δει ξανά το γραμμένο έτσι; Εμείς πάντως δεν είχαμε --τουλάχιστον όχι πριν χρησιμοποιήσουμε αυτόν τον μετατροπέα--, γεγονός που μας θυμίζει ότι είναι ώρα να πούμε πώς από το δεκαδικό πηγαίνουμε στο δυαδικό, στο οκταδικό ή στο δεκαεξαδικό σύστημα αρίθμησης.
Μετατροπές από το δεκαδικό σε όλα τα άλλα!
Θα δούμε πρώτα πώς μετατρέπουμε δεκαδικούς αριθμούς χωρίς υποδιαστολή σε άλλα συστήματα αρίθμησης και μετά πώς μετατρέπουμε δεκαδικούς αριθμούς με υποδιαστολή -- επίσης σε άλλα συστήματα αρίθμησης.
Γενικά, για τη μετατροπή ενός θετικού ακέραιου από το δεκαδικό σύστημα στο σύστημα με βάση , κάνουμε διαδοχικές διαιρέσεις με το
και σημειώνουμε τα υπόλοιπα της διαίρεσης, μιας κι αυτά είναι τα ψηφία του αριθμού μας στο
-δικό σύστημα. Οι διαιρέσεις γίνονται στον αρχικό αριθμό και στο πηλίκο της προηγούμενης διαίρεσης και σταματούν όταν πάρουμε πηλίκο 0. Το πώς ακριβώς δουλεύει η διαδικασία μετατροπής φαίνεται μέσα από τα ακόλουθα τρία παραδείγματα.
Παράδειγμα 1. Μετατροπή του 119 στο δυαδικό σύστημα ().
decimal 119 step 1: 119/2 quotient 59 remainder 1 (rightmost digit) step 2: 59/2 quotient 29 remainder 1 step 3: 29/2 quotient 14 remainder 1 step 4: 14/2 quotient 7 remainder 0 step 5: 7/2 quotient 3 remainder 1 step 6: 3/2 quotient 1 remainder 1 step 7: 1/2 quotient 0 remainder 1 (leftmost digit) binary 1110111
Παράδειγμα 2. Μετατροπή του 6517 στο οκταδικό σύστημα ().
decimal 6517 step 1: 6517/8 quotient 814 remainder 5 (rightmost digit) step 2: 814/8 quotient 101 remainder 6 step 3: 101/8 quotient 12 remainder 5 step 4: 12/8 quotient 1 remainder 4 step 5: 1/8 quotient 0 remainder 1 (leftmost digit) octal 14565
Παράδειγμα 3. Μετατροπή του 854062 στο δεκαεξαδικό σύστημα ().
decimal 854062 step 1: 854062/16 quotient 53378 remainder 14=E (rightmost digit) step 2: 53378/16 quotient 3336 remainder 2 step 3: 3336/16 quotient 208 remainder 8 step 4: 208/16 quotient 13 remainder 0 step 5: 13/16 quotient 0 remainder 13=D (leftmost digit) hexadecimal D082E
Ας δούμε τώρα πώς μετατρέπουμε δεκαδικούς αριθμούς με υποδιαστολή σε άλλα συστήματα αρίθμησης. Ας υποθέσουμε ότι ο δεκαδικός μας έχει τη μορφή
όπου φυσικά και παίρνουμε ένα ακέραιο μέρος κι ένα κλασματικό
2. το ακέραιο μέρος είναι ένα νέο ψηφίο στα δεξιά της υποδιαστολής στο -δικό
3. αν το κλασματικό μέρος που πήραμε από το 1 είναι μηδέν ή έχουμε αρκετά ψηφία για την επιθυμητή ακρίβεια, πήγαινε στο 5
4. πήγαινε στο βήμα 1 και λάβε υπόψη το νέο κλασματικό μέρος, αυτό δηλαδή που πήραμε από την προηγούμενη επανάληψη
5. έχουμε όλο το κλασματικό μέρος στο -δικό και η διαδικασία σταματά
Ας δούμε στην πράξη τη μετατροπή του δεκαδικού 3.14159265358979 (προσέγγιση του ) στο δεκαεξαδικό (
). Το ακέραιο μέρος είναι το ίδιο και στα δύο συστήματα αρίθμησης, πάμε λοιπόν να μετατρέψουμε το κλασματικό, δηλαδή το 0.14159265358979:
step 1: 0.14159265358979 x 16 = 2.26548245743669 2 (leftmost digit) step 2: 0.26548245743669 x 16 = 4.24771931898704 4 step 3: 0.24771931898704 x 16 = 3.96350910379264 3 step 4: 0.96350910379264 x 16 = 15.4161456606822 15=F step 5: 0.4161456606822 x 16 = 6.6583305709152 6 step 6: 0.6583305709152 x 16 = 10.5332891346432 10=Α step 7: 0.5332891346432 x 16 = 8.5326261542912 8 step 8: 0.5326261542912 x 16 = 8.5220184686592 8 step 9: 0.5220184686592 x 16 = 8.3522954985472 8 step 10: 0.3522954985472 x 16 = 5.6367279767552 5 step 11: 0.6367279767552 x 16 = 10.1876476280832 10=Α
Η διαδικασία μπορεί να συνεχιστεί, αποφασίζουμε όμως ότι 11 δεκαεξαδικά ψηφία στα δεξιά της υποδιαστολής αποτελούν ικανοποιητική ακρίβεια. Το 3.14159265358979, λοιπόν, στο δεκαεξαδικό γράφεται ως 3.243F6A8885A.
Η αγάπη των υπολογιστών προς το δυαδικό και κάποιες άλλες, αγαστές σχέσεις
Οι υπολογιστές τρέφουν μεγάλη συμπάθεια για το δυαδικό σύστημα. Τόσο μεγάλη, που στην πραγματικότητα μόνο αυτό καταλαβαίνουν. Αυτά τα συναισθήματα δεν προέκυψαν τυχαία. Η ίδια η λογική λειτουργίας των υπολογιστών βασίζεται στη Λογική Boole, ένα είδος μαθηματικής λογικής με δύο τιμές. Έτσι, τα δύο ψηφία του δυαδικού συστήματος είναι ακριβώς όσα χρειάζονται για να κωδικοποιηθούν οι δύο τιμές της Άλγεβρας Boole. (Το 0 αντιστοιχεί στο λογικό Όχι και το 1 στο λογικό Ναι της Άλγεβρας Boole.) Πέρα από την Άλγεβρα Boole, η κατασκευή hardware που μπορεί να διακρίνει δύο μόνο καταστάσεις είναι ευκολότερη από την κατασκευή hardware που μπορεί να διακρίνει περισσότερες.
Τώρα, επειδή και
, για την αναπαράσταση ενός οκταδικού ψηφίου χρειάζονται το πολύ τρία δυαδικά ψηφία, ενώ για την αναπαράσταση ενός δεκαεξαδικού ψηφίου χρειάζονται το πολύ τέσσερα δυαδικά ψηφία. Στο ακόλουθο πίνακα φαίνονται οι αντιστοιχίσεις μεταξύ οκταδικών και δυαδικών ψηφίων.
Octal digit Binary triplet =========== ============== 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
Στον επόμενο πίνακα φαίνονται και οι αντιστοιχίσεις μεταξύ δεκαεξαδικών και δυαδικών ψηφίων.
Binary digit Binary quartet ============ ============== 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
Χρησιμοποιώντας πάντα τρία δυαδικά για κάθε οκταδικό ψηφίο και τέσσερα δυαδικά για κάθε δεκαεξαδικό ψηφίο, μπορούμε να μετατρέπουμε οκταδικούς σε δυαδικούς και δεκαεξαδικούς σε δυαδικούς απευθείας, ψηφίο προς ψηφίο, κοιτάζοντας απλά τους προηγούμενους πίνακες. Για παράδειγμα, αμέσως βλέπουμε ότι
κι ότι
Μπορούμε βέβαια να πηγαίνουμε κι αντίστροφα. Προσθέτοντας στ' αριστερά ενός δυαδικού αριθμού όσα μηδενικά χρειάζονται ώστε ν' αποτελείται μόνο από τριάδες ή μόνο από τετράδες ψηφίων, μπορούμε να μετατρέπουμε άμεσα στο οκταδικό ή στο δεκαεξαδικό σύστημα αντίστοιχα.
Αν μη τι άλλο, λοιπόν, οι οκταδικοί και οι δεκαεξαδικοί αριθμοί που βλέπουμε σε κάποια προγράμματα όπως είναι οι debuggers, χρησιμεύουν ώστε να απεικονίζονται με λιγότερα ψηφία οι δυαδικοί αριθμοί, οι μοναδικοί που καταλαβαίνουν οι υπολογιστές στο βασικό τους επίπεδο.
Σας άρεσε το άρθρο; Αν ναι, τι θα λέγατε για ένα tip στο PayPal;
2 Responses to “Συστήματα αρίθμησης και μετατροπές”
Comment Link
Οι άνθρωποι χωρίζονται σε 10 κατηγορίες:
αυτοί που ξέρουν το δυαδικό σύστημα και αυτοί που δεν το ξέρουν…
Comment Link
Οι άνθρωποι χωρίζονται σε 10 κατηγορίες: Αυτοί που ξέρουν το δυαδικό σύστημα, αυτοί που δεν το ξέρουν, και αυτοί που δεν μπορούν να το ξεχωρίσουν από το τριαδικό σύστημα.