Πέμπτη, 25 Σεπτεμβρίου 2008

Συστήματα αρίθμησης

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

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

Α' = 1,
Β' = 2,
Γ' = 3,
Δ' = 4,
Ε' = 5,
F' = 6, (το σύμβολο ονομαζόταν δίγαμμα, δηλαδή δυο γάμμα το ένα πάνω στο άλλο ή F=2*Γ, (6=2*3). Σήμερα γράφουμε στην θέση του ένα στίγμα: ς' ή στ'),
Ζ' = 7,
Η' = 8,
Θ' = 9,

Ι' = 10, ΙΑ' = 11, ΙΒ' = 12, κλπ. ,
Κ' = 20, ΚΑ' = 21, ΚΒ' = 22, κλπ. ,
Λ' = 30,
Μ' = 40,
Ν' = 50,
Ξ' = 60,
Ο' = 70,
Π' = 80,
Q' = 90, (ειδικό σύμβολο που ονομαζόταν κόππα),

Ρ' = 100, ΡΑ' = 101, ΡΒ' = 102, ..., ΡΛΖ?'= 137, κλπ. ,
Σ' = 200, ΣΝ' = 250, κλπ. ,
Τ' = 300,
Υ' = 400,
Φ' = 500,
Χ' = 600,
Ψ' = 700,
Ω' = 800,
π' = 900, (ειδικό σύμβολο που ονομαζόταν σαμπί),

,Α = 1000 και ,ΑΩΚΑ' = 1821 και ,ΑΥΝΓ' = 1453 κλπ. ,
,Β = 2000, κλπ.

Το αρχαίο ρωμαϊκό σύστημα αρίθμησης ήταν αλλιώτικο. Είχε ορισμένα σύμβολα διαφορετικών αξιών:

I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000

και αν ένα σύμβολο ήταν δεξιά από ίσο ή μεγαλύτερό του γινόταν πρόσθεση

XI = 11, XII = 12, MDCCLΙΙ = 1752, MM = 2000, κλπ.

ενώ αν ένα σύμβολο ήταν αριστερά από μεγαλύτερό του, γινόταν αφαίρεση

IX = 9, XL = 40, XC = 90, MCM = 1900, κλπ.

με μια προσπάθεια να γράφεται ο αριθμός με τα λιγότερα σύμβολα, δηλαδή

1400 = MCD (όχι MCCCC).

Δεν ισχυρίζομαι ότι δεν ήξεραν να κάνουν πρόσθεση οι αρχαίοι, (είχαν μεθόδους με χρήση πινάκων), αλλά ο τρόπος που κάνουμε σήμερα την πρόσθεση δεν εξυπηρετείται ούτε από το ελληνικό ούτε από το ρωμαϊκό σύστημα αρίθμησης.

Τα σημερινά συστήματα αρίθμησης έχουν κάποιες έννοιες, που πρέπει να τις δούμε προσεκτικά:

Η βάση του συστήματος είναι ένας αριθμός, που ταυτίζεται με το πλήθος των συμβόλων (ψηφίων) που χρησιμοποιούμε για να γράψουμε τους αριθμούς.

Αν η βάση είναι το 2, το σύστημα λέγεται δυαδικό (binary) και χρησιμοποιεί δύο σύμβολα (0, 1) για γραφή των αριθμών, που λέγονται δυαδικά ψηφία (bits).

Αν η βάση είναι το 8, το σύστημα λέγεται οκταδικό (octal) και χρησιμοποιεί οκτώ σύμβολα (0, 1, 2, 3, 4, 5, 6, 7), που λέγονται οκταδικά ψηφία (octal digits).

Αν η βάση είναι το 10, το σύστημα λέγεται δεκαδικό (decimal) και χρησιμοποιεί δέκα σύμβολα (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), που λέγονται δεκαδικά ψηφία (decimal digits).

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

Αν η βάση είναι το 16, το σύστημα λέγεται δεκαεξαδικό (hexadecimal) και χρησιμοποιεί δεκαέξι σύμβολα (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), που λέγονται δεκαεξαδικά ψηφία (Hex digits).

Υπάρχουν συστήματα με άλλες βάσεις, όπως το εξηκονταδικό των Ασσυρίων. (Η ώρα έχει εξήντα πρώτα λεπτά. Το πρώτο λεπτό έχει εξήντα δεύτερα λεπτά. Όμοια χωρίζουμε τις μοίρες των γωνιών).

Ένα από τα σύμβολα σημαίνει την έλλειψη ποσότητας, το μηδέν, και τα άλλα σύμβολα διαφέρουν από το προηγούμενό τους (όπως τα έχουμε καταγράψει) κατά μια ακέραιη μονάδα.

Ο αριθμός που περιγράφει μια ποσότητα έχει δυο τμήματα που χωρίζονται με υποδιαστολή (συνήθως μια τελεία). Το αριστερό τμήμα είναι το ακέραιο μέρος της ποσότητας και το δεξιό τμήμα είναι το κλασματικό μέρος της ποσότητας. Όταν υπάρχει κλασματικό μέρος η αναγραφή της υποδιαστολής είναι υποχρεωτική.

Παράδειγμα : Ο αριθμός [987.45], έχει ακέραιο μέρος το [987] και κλασματικό μέρος το [.45].

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

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

Ο αριθμός του προηγούμενου παραδείγματος [987.45], αν είναι γραμμένος στο δεκαδικό σύστημα αρίθμησης, (οπότε, δηλώνοντας την βάση του με μικρό δείκτη δεξιά του, τον γράφουμε [987.4510]), ισοδυναμεί με τις πράξεις [9 * 10^2 + 8 * 10^1 + 7 * 10^0 + 4 * 10^-1 + 5 * 10^-2] = [9 * 100 + 8 * 10 + 7 * 1 + 4 * 0.1 + 5 * 0.01] = [900 + 80 + 7 + 0.4 + 0.05].

Ας δούμε την μέθοδο με την οποία σχηματίζουμε τους (ακέραιους) αριθμούς :

Βήμα-Α : Βάζουμε το μηδέν [0] στην θέση όπου η βάση έχει εκθέτη μηδέν.
Βήμα-Β : Προσθέτουμε στον αριθμό μια ακέραια μονάδα, (οπότε χρησιμοποιούμε στην θέση με εκθέτη μηδέν το επόμενο ψηφίο του συστήματος αρίθμησης).
Βήμα-Γ : Αν δεν υπάρχει επόμενο ψηφίο, βάζουμε το μηδέν [0] στην θέση αυτή και προσθέτουμε [1] στην αριστερή διπλανή θέση.

Δυαδικό _Τετραδικό Οκταδικό Δεκαδικό Δεκαεξαδικό
______0 ______0 ______0 ______0 ______0
______1 ______1 ______1 ______1 ______1
_____10 ______2 ______2 ______2 ______2
_____11 ______3 ______3 ______3 ______3
____100 _____10 ______4 ______4 ______4
____101 _____11 ______5 ______5 ______5
____110 _____12 ______6 ______6 ______6
____111 _____13 ______7 ______7 ______7
___1000 _____20 _____10 ______8 ______8
___1001 _____21 _____11 ______9 ______9
___1010 _____22 _____12 _____10 ______A
___1011 _____23 _____13 _____11 ______B
___1100 _____30 _____14 _____12 ______C
___1101 _____31 _____15 _____13 ______D
___1110 _____32 _____16 _____14 ______E
___1111 _____33 _____17 _____15 ______F
__10000 ____100 _____20 _____16 _____10
__10001 ____101 _____21 _____17 _____11
__10010 ____102 _____22 _____18 _____12
__10011 ____103 _____23 _____19 _____13
__10100 ____110 _____24 _____20 _____14

Είναι αξιοπερίεργο να δείτε ότι σε όλα τα αριθμητικά συστήματα η βάση γράφεται [10], (1 * βάση^1 + 0 * βάση^0). (Ετοιμαζόμαστε να γράψουμε την βάση μόλις μας τελειώσουν τα ψηφία, άρα βάζουμε [0] στην θέση των μονάδων και [1] ακριβώς αριστερά του).
* Στο δυαδικό, [10] είναι το δύο.
* Στο τετραδικό, [10] είναι το τέσσερα.
* Στο οκταδικό, [10] είναι το οκτώ.
* Στο δεκαδικό, [10] είναι το δέκα.
* Στο δεκαεξαδικό, [10] είναι το δεκαέξι.

Φυσικά κάτι αντίστοιχο ισχύει για όλες τις δυνάμεις της βάσης. Το τετράγωνο της βάσης, που γράφεται πάντοτε [100], ισοδυναμεί
* για το δυαδικό σύστημα με 2^2 + 0 + 0 = 4,
* για το τετραδικό σύστημα με 4^2 + 0 + 0 = 16,
* για το οκταδικό σύστημα με 8^2 + 0 + 0 = 64,
* για το δεκαδικό σύστημα με 10^2 + 0 + 0 = 100,
* για το δεκαεξαδικό σύστημα με 16^2 + 0 + 0 = 256.

Επειδή εδώ παρακάτω (και σε επόμενες αναρτήσεις) θα χρησιμοποιήσω αριθμούς σε διάφορα συστήματα αρίθμησης, όποτε δεν θα είναι αριθμοί του δεκαδικού συστήματος, θα βάζω δίπλα δεξιά τους την βάση του αριθμητικού τους συστήματος με μικρούς δείκτες.

Άσκηση: Θα μπορούσε να ισχύει ποτέ ... 6 * 9 = 42 ;
Απάντηση: Ναι, αν οι αριθμοί είναι εκφρασμένοι στο δεκατριαδικό σύστημα! (Βρίσκουμε την άγνωστη βάση παρατηρώντας ότι 54=4*βάση+2 άρα βάση=13).

613 * 913 = 4213
(6 * 13^0) * (9 * 13^0) = (4 * 13^1 + 2 * 13^0)
(6 * 1) * (9 * 1) = (4 * 13 + 2 * 1)
610 * 910 = 5210 + 210
5410 = 5410