2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ 2.1 Αριθμητικά συστήματα Κάθε πραγματικός αριθμός χ μπορεί να παρασταθεί σε ένα αριθμητικό σύστημα με βάση β>1 με μια δυναμοσειρά της μορφής, -οο * = ± Σ ψ β " (2 1) η - ν όπου οι συντελεστές ψ είναι τα ψηφία του αριθμού και ανήκουν στο σύνολο {0,1,2,...,β-1}. Τα αριθμητικά συστήματα παίρνουν το όνομά τους από τη βάση που χρησιμοποιούν. Έτσι, έχουμε το δεκαδικό σύστημα με βάση β=10, το δυαδικό με βάση β=2, το τριαδικό, το οκταδικό, κ.λπ. Για αριθμητικά συστήματα που απαιτούν αριθμό ψηφίων μεγαλύτερο του δεκαδικού, όπως το δωδεκαδικό και δεκαεξαδικό, χρησιμοποιούμε για τα επιπλέον ψηφία, αντί διψήφιων δεκαδικών αριθμών, αλφαριθμητικούς χαρακτήρες (βλέπε πιν. 2.1α). Πίνακας 2.1α Αριθμητικό σύστημα Βάση Ψηφία του αριθμητικού συστήματος Δυαδικό (binary) 2 0,1 Τριαδικό (ternary) 3 0,1,2 Οκταδικό (octal) 8 0,1,2,3,4,5,6,7 Δεκαδικό (decimal) 10 0,1,2,3,4,5,6,7,8,9 Δωδεκαδικό (duo-decimal) 12 0,1,2,3,4,5,6,7,8,9, Α,Β Δεκαεξαδικό (hexadecimal) 16 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F Από τον τύπο (2.1) παρατηρούμε ότι η ακριβής παράσταση ενός πραγματικού αριθμού σε ένα σύστημα αριθμήσεως απαιτεί γενικά τη χρήση ενός άπειρου πλήθους ψηφίων. Στην πράξη περιοριζόμεθα σε αριθμούς με πεπερασμένο πλήθος ψηφίων, εργαζόμενοι σ' ένα πεπερασμένο υποσύνολο των πραγματικών αριθμών. Ο αριθμός x παριστάνεται απλά από τα ψηφία που περιέχει και τη βά-
Εισαγωγή στην Επιστήμη των Υπολογιστών ση του αντίστοιχου αριθμητικού συστήματος στο οποίο αναφέρεται. Σύμφωνα με αυτό το συμβατικό κανόνα, ο πραγματικός αριθμός χ, σ' ένα αριθμητικό σύστημα με βάση β>1, γράφεται1 Γ ψ ψ,ψ τ Ψ Ψ,ψ, εάν ν>0, ψ Φθ Υν Υν -1 Υν-2 Υο Υ-1 Υ-2 (β) Υν ^ 1. ^ 000...0 ψ y V ψ V -,ψ I V-Z r.. m β), εάν ν<0. ^ V -ν-1 φορές Επειδή συνήθως εργαζόμεθα σε ένα συγκεκριμένο αριθμητικό σύστημα, υπεραπλουστεύουμε ακόμα περισσότερο την παράσταση του αριθμού x αναφερόμενοι μόνο στα ψηφία του. Έτσι, ενώ γράφουμε, π.χ. στο δεκαδικό σύστημα, τον αριθμό 39718.52 ^ ή απλούστερα 39718.52, στην ουσία αναφερόμαστε στο άθροισμα: 3χ104+9 χ103+7χ 102+1χ101+8χ 10 +5χ1 0 '1+2χ10"2. Με τον ίδιο συμβατικό τρόπο παράστασης ο αριθμός 11110101 V συστήματος αντιστοιχεί στο άθροισμα: του δυαδικού 1χ27+1χ26+1χ25+1χ24+0χ23+0χ2 1+1χ2. Στον πίνακα 2.1 β που ακολουθεί δίνουμε την αντιστοιχία μεταξύ των πρώτων αριθμών του δεκαεξαδικού, δεκαδικού, οκταδικού και δυαδικού συστήματος αριθμήσεως. 2.2 Μετατροπή συστήματος αριθμήσεως Οι διάφορες στοιχειώδεις πληροφορίες, επομένως και οι αριθμοί, εισάγο- νται στον Η/Υ, όπως θα δούμε στα επόμενα, με μορφή ψηφίων. Η χρήση για το σκοπό αυτό, δηλ. την είσοδο της πληροφορίας στον Η/Υ, του δεκαδικού συστήματος, με το οποίο είμαστε τόσο εξοικειωμένοι, θα δημιουργούσε τεχνολογικό πρόβλημα γιατί η αναγνώριση από τον Η/Υ δέκα διαφορετικών φυσικών καταστάσεων και η αντιστοίχησή τους στα δέκα ψηφία του δεκαδικού συστή- 1Στη συνέχεια, αντί της γνωστής μας υποδιαστολής "," των κλασματικών αριθμών Θα χρησιμοποιούμε την τελεία " για λόγους εξοικίωσης με τη χρήση της, ως υποδιαστολής, στον Η/Υ. 2-2
------------------------------------------------------------------------ Αριθμητική του Υπολογιστή ματος θα επιβράδυνε πολύ την ταχύτητα της λειτουργίας του. Το βασικό πλεονέκτημα, από αυτή την άποψη, του δυαδικού συστήματος, που διαθέτει μόνο δύο δυαδικά ψηφία (binary digits - bits), επιτρέπει τη σχετικά απλή εφαρμογή του στον Η/Υ αφού αρκούν δύο μόνο διαφορετικές καταστάσεις για να αντιστοιχηθούν στα bits {0,1}. Αντίθετα, για την παράσταση των πληροφοριών έξω από τον Η/Υ, εκτός βέβαια από την εκτύπωση του προγράμματος μας και των αποτελεσμάτων, χρησιμοποιούνται, για λόγους ευκολίας, το οκταδικό και δεκα- εξαδικό σύστημα αριθμήσεως. Για παράδειγμα αναφέρουμε ότι οι Η/Υ UNIVAC 1106 εκτύπωναν το περιεχόμενο της μνήμης (dump) για διάφορους ελέγχους και εύρεση λαθών στο οκταδικό σύστημα, οι Η/Υ IBM 360 και 370 χρησιμοποιούσαν, για τον ίδιο σκοπό, το δεκαεξαδικό σύστημα κ.λπ. Πίνακας 2.1 β Δεκαεξαδικό Δεκαδικό Οκταδικό Δυαδικό 0 0 0 0000 1 1 1 0001 2 2 2 0010 3 3 3 0011 4 4 4 0100 5 5 5 0101 6 6 6 0110 7 7 7 0 1 1 1 8 8 10 1000 9 9 11 1001 A 10 12 1 0 1 0 Β 11 13 1011 C 12 14 1100 D 13 15 1101 Ε 14 16 1 1 1 0 F 15 17 1 1 1 1 Από τα ανωτέρω φαίνεται ότι είναι απαραίτητη η γνώση του τρόπου μετατροπής των αριθμών από το ένα σύστημα αριθμήσεως στο άλλο. Γι' αυτό θα δώσουμε παρακάτω εύκολους αλγόριθμους και συγκεκριμένα παραδείγματα των πιο συνηθισμένων μετατροπών. 2.2.1 Δεκαδικός * Δυαδικός Η μετατροπή ενός αριθμού του δεκαδικού συστήματος στον αντίστοιχο 2-3
Εισαγωγή στην Επιστήμη των Υπολογιστών αριθμό του δυαδικού συστήματος, γίνεται με τη διαίρεση του δεκαδικού αριθμού με το 2 και στη συνέχεια τις διαδοχικές διαιρέσεις των πηλίκων με το 2, ώσπου το τελευταίο πηλίκο να γίνει 1. Το τελευταίο πηλίκο και τα υπόλοιπα των διαιρέσεων, γραμμένα με την αντίστροφη σειρά από αυτήν που βρέθηκαν, δίνουν τον αντίστοιχο δυαδικό αριθμό. Παράδειγμα: 4 9 = 110001 (2 ) Η μετατροπή ενός δυαδικού αριθμού στον αντίστοιχο δεκαδικό γίνεται προφανώς με τον πολλαπλασιασμό κάθε δυαδικού του ψηφίου με την ανάλογη προς τη θέση του ψηφίου αυτού δύναμη του 2. Παοάδειγιια: 10011001. ---- x u----- (2) (10) 1χ27+0χ26+0χ25+1χ24+1χ23+0χ22+0χ21+1χ2 =153 χ =153 (10) (10) Ο αριθμός του δεκαδικού συστήματος δ, 0<δ<1, μετατρέπεται σε δυαδικό με πολλαπλασιασμό του δ και του δεκαδικού μέρους των διαδοχικών γινομένων με το 2, ώσπου να βρεθεί γινόμενο με δεκαδικό μέρος 0. Ο αντίστοιχος δυαδικός, κλασματικός αριθμός2 έχει ως κλασματικό μέρος τα ακέραια ψηφία των γινομένων, που προκύπτουν από τους διαδοχικούς πολλαπλασιασμούς, με τη σειρά που βρέθηκαν. 2 Χρησιμοποιούμε την έννοια "κλασματικός (fractional) αριθμός" αντί της συνηθισμένης "δεκαδικός αριθμός" (δηλ. με δεκαδικό μέρος) που προφανώς θα δημιουργούσε σύγχιση. 2-4
Αριθμητική του Υπολογιστή Παοαδείγαατα: (ο) 0.25 (10) X (2 ) 0.25x2=0.50 0.50x2=1.00 (β) 0.935 (10) (2 ) 0.935x2=1.870 0.870x2 = 1.740 0.740x2 = 1.480 χ =0.111011... ( 2 ) (2 ) 0.480x2 = 0.960 0.960x2=1.920 0.920x2=1.940 Τέλος, για τη μετατροπή ενός κλασματικού αριθμού του δεκαδικού συστήματος, που είναι μεγαλύτερος από το 1, στον αντίστοιχο δυαδικό αριθμό, μετατρέπουμε ξεχωριστά το ακέραιο και το κλασματικό του μέρος σε δυαδικούς αριθμούς. Παοάδειγιια: 49.25 ----- x Η ^ (10) (2) Σύμφωνα με τα προηγούμενα παραδείγματα έχουμε x =110001.01. 2.2.2 Δεκαδικός - * - Οκτάδικός Η μετατροπή ενός αριθμού του δεκαδικού συστήματος, στον αντίστοιχο του οκταδικού και αντίστροφα, γίνεται όπως και στις περιπτώσεις του δυαδικού συστήματος χρησιμοποιώντας όμως, αντί της βάσεως 2, τη βάση 8. 2-5
Εισαγωγή στην Επιστήμη των Υπολογιστών Παράδειγίΐα: 290 2 36 (α) 290 (10) (8) χ =442 ( 8 ) ( 8 ) 4 0 (Ρ) 442 (8 ) X (10) 4χ82+4χ81+2χ8 =290 χ =290 (10) (10) 2.2.3 Δυαδικός * Οκταδικός 3 Επειδή 8=2, τρία ψηφία του δυαδικού συστήματος μπορούν να παρασταθούν με ένα ψηφίο του οκταδικού. Έτσι, για τη μετατροπή ενός δυαδικού αριθμού σε οκταδικό χωρίζουμε τον δυαδικό αριθμό σε τριψήφια τμήματα από τα δεξιά, συμπληρώνοντας το τελευταίο αριστερό τμήμα με μηδενικά σε περίπτωση που δεν είναι τριψήφιο και αντικαθιστούμε το κάθε τριψήφιο τμήμα με το αντίστοιχο ψηφίο του οκταδικού συστήματος. Αντίστροφα γίνεται η μετατροπή οκταδικού σε δυαδικό αριθμό. Παραδείγιιατα: (α) 11011101 (2) (8) 011 011 101 η L χ =335 Γ (8) 3 3 5 3 4 <Ρ> 347 (8) 7 Ί (2 ) 011 100 111 J ( 2) 2-6
Αριθμητική του Υπολογιστή 2.2.4 Δυαδικός * * Αεκαεξαδικός 4 Επειδή 2=16, τέσσερα ψηφία του δυαδικού συστήματος μπορούν να παρασταθούν μ' ένα ψηφίο του δεκαεξαδικού. Ο δυαδικός αριθμός, κατά τα γνωστά, χωρίζεται ανά τέσσερα ψηφία τα οποία αντικαθιστούμε με τα αντίστοιχα δεκαεξαδικά. Η μετατροπή του δεκαεξαδικού σε δυαδικό αριθμό γίνεται αντίστροφα. Παραδείγιιατα: 0001 1000 1 8 Β F 1011 1111 (α) (β) 110001110 (2 ) (16) 1110 Ε χ =18Ε (16) (16) BF2 (16) (2 ) 2 χ =101111110010 ( 2 ) ( 2 ) 0010 2.3 Οι αριθμητικές πράξεις στο δυαδικό σύστημα Η εκτέλεση των τεσσάρων βασικών πράξεων της αριθμητικής δεν παρουσιάζει διαφοροποιήσεις στα διάφορα αριθμητικά συστήματα. Οι γνωστοί αλγόριθμοι, σύμφωνα με τους οποίους εκτελούμε τις πράξεις αυτές στο δεκαδικό σύστημα, ισχύουν και στα υπόλοιπα συστήματα με την προϋπόθεση ότι τα κρατούμενα εξαρτώνται από την αντίστοιχη, κάθε φορά, βάση. Σύμφωνα με τα προηγούμενα, για τις αριθμητικές πράξεις του δυαδικού συστήματος ισχύουν οι εξής κανόνες: στην πρόσθεση, 0+0=0, 0+1=1, 1+0=1, 1+1=10. στην αφαίρεση, 0-0=0, 1-1=0, 1-0=1, 10-1=1, στον πολλαπλασιασμό, 0x0=0, 0x1=0, 1x0=0, 1x1=1, και στη διαίρεση, 1:1=1, 0:1=0. 2-7
Εισαγωγή στην Επιστήμη των Υπολογιστών Πιο κάτω θα δώσουμε από ένα παράδειγμα εκτελέσεως των τεσσάρων πράξεων στο δυαδικό σύστημα, με το ανάλογο του στο δεκαδικό σύστημα. Η εφαρμογή των αντίστοιχων κανόνων και αλγορίθμων για την εκτέλεση των α ριθμητικών πράξεων στα λοιπά αριθμητικά συστήματα είναι προφανής. Παραδείγιιατα: Δυαδικοί αριθμοί Αντίστοιχοι δεκαδικοί αριθμοί (α) 100101.1101 37.8125 + 111.001 + 7.125 101100.1111 44.9375 (β) 100101.1101 37.8125-111.001-7.1 2 5 11110.1011 30.6875 (Υ) 11.01 3.25 χ 1.01 χ 1.25 1101 1625 0000 + 650 + 1101 325 100.0001 4.0625 2.4 Η παράσταση των αριθμών στον υπολογιστή Οι διάφορες πληροφορίες που εισάγονται στον υπολογιστή είναι δύο ειδών, εντολές και δεδομένα. Η παράστασή τους στους σύγχρονους Η/Υ, όπως είδαμε στα προηγούμενα, γίνεται με μια σειρά δυαδικών ψηφίων (bits). Τα μήκη και η εσωτερική δομή των εντολών και δεδομένων δεν παραμένουν σταθερά. 2-8
------------------------------------------------------------------------ Αριθμητική του Υπολογιστή Τα δεδομένα μπορεί να είναι αριθμητικά, χαρακτήρες και σύμβολα, ή αλφαριθμητικά (μικτά). Τα αριθμητικά δεδομένα, εμφανίζονται στις διάφορες λειτουργίες του υπολογιστή με σταθερή υποδιαστολή (fixed point) ή με κινητή υποδιαστολή (floating point). Τα αριθμητικά δεδομένα σταθερής υποδιαστολής, χρησιμοποιούνται συνήθως σε προβλήματα εμπορικών εφαρμογών που απαιτούν απλή ανάλυση του μεγέθους των μεταβλητών. Τα δεδομένα αυτά είναι δυαδικοί αριθμοί ή δεκαδικοί αριθμοί δυαδικής μορφής, μετά την κατάλληλη κωδικοποίηση, με ή χωρίς πρόσημο. Τα δεδομένα κινητής υποδιαστολής χρησιμοποιούνται συνήθως σε πολύπλοκους μαθηματικούς υπολογισμούς. Όπως θα δούμε λεπτομερέστερα στο τρίτο κεφάλαιο, ένα πλήθος bits χρησιμοποιείται για το σχηματισμό μιας μεγαλύτερης μονάδας πληροφορίας, του χαρακτήρα (byte). Ένας χαρακτήρας επαρκεί για την παράσταση ενός δεκαδικού ψηφίου ή αλφαριθμητικού χαρακτήρα ή ειδικού συμβόλου. Το μήκος του διαφέρει στους διάφορους υπολογιστές. Μεγαλύτερη μονάδα πληροφορίας είναι η λέξη (word) που έχει μήκος μερικών χαρακτήρων. Κάθε αριθμητικό δεδομένο μετατρέπεται σε αντίστοιχο αριθμό δυαδικής μορφής και τοποθετείται στις θέσεις της λέξεως. Εάν ο αριθμός θέσεων της λέξεως είναι μικρότερος από τον αριθμό των ψηφίων του αριθμού, ο αριθμός στρογγυλεύεται με την περικοπή μερικών ψηφίων του. Στην αντίθετη περίπτωση, τοποθετείται το 0 στις κενές θέσεις αριστερά. Η πρώτη θέση της λέξεως χρησιμοποιείται για την παράσταση του προσήμου του αριθμού. To bit 0 παριστάνει το + και το bit 1 το -. 2.4.1 Αριθμοί σταθερής υποδιαστολής Η θέση της υποδιαστολής, αφού είναι σταθερή, καθορίζει και το μέγεθος των αριθμών που μπορούν να παρασταθούν στον υπολογιστή. Για τη θέση της υποδιαστολής είναι προφανές ότι, στην περίπτωση αυτή, δεν απαιτείται πληροφορία. Η θέση της υποδιαστολής είναι συνήθως στο αριστερό άκρο οπότε ο αριθμός, έστω α, είναι κλασματικός με α <1, ή το δεξιό άκρο, οπότε ο αριθμός α είναι ακέραιος. Για λέξη μήκους η δυαδικών θέσεων και ακέραιη παράσταση 2-9
Εισαγωγή στην Επιστήμη των Υπολογιστών αριθμών η περιοχή των αριθμών που μπορούν να παρασταθούν είναι 2 η-1 >] Το σύστημα σταθερής υποδιαστολής παρουσιάζει ένα βασικό μειονέκτημα. Τα αποτελέσματα των πράξεων πολλαπλασιασμού και διαιρέσεως δεν είναι ακριβή γιατί δεν υπάρχουν αρκετά ψηφία για την ορθή παράστασή τους. Π.χ., εάν το μήκος της λέξεως και η θέση της υποδιαστολής καθορίζει την περιοχή ± δδδδ.δδ των αριθμών, όπου δ δεκαδικό ψηφίο, το γινόμενο των αριθμών 10.53 και 350.1225 στρογγυλεύεται στον αριθμό 3686.79 αντί για τον σωστό 3686.7899. Για το λόγο αυτό, συνήθως, η σταθερή υποδιαστολή χρησιμοποιείται για την παράσταση ακέραιων αριθμών. 2.4.2 Αριθμοί κινητής υποδιαστολής Είναι εύκολο να αναλογιστεί κανείς πόσο ολέθριο είναι το μειονέκτημα της σταθερής υποδιαστολής όταν η αριθμητική σταθερής υποδιαστολής χρησιμοποιηθεί σε επιστημονικά προγράμματα, με πολύπλοκες μαθηματικές εξισώσεις και μεγάλο αριθμό πράξεων. Για το λόγο αυτό στα προγράμματα της τελευταίας κατηγορίας πρέπει να χρησιμοποιούνται αριθμοί κινητής υποδιαστολής. Για τις πράξεις κινητής υποδιαστολής έχει κατασκευαστεί ειδική μονάδα υλικού (hardware)3 η οποία ενσωματώθηκε στην κεντρική μονάδα επεξεργασίας4 του Η/Υ. Στο παρελθόν, στους παλαιούς υπολογιστές που δεν διέθεταν το κατάλληλο υλικό, η αριθμητική κινητής υποδιαστολής επιτυγχάνετο μέσω προγράμματος. Στο σύστημα κινητής υποδιαστολής κάθε αριθμός α καθορίζεται από ένα ζεύγος (e,f), όπου ί<1 και e ο εκθέτης της δυνάμεως με βάση β, που ικανοποιεί τη σχέση: α = ±ίβ6 3 Με τον όρο υλικό (hardware) εννοούμε τα διάφορα κυκλώματα και το σύνολο των ηλεκτρομηχανικών εξαρτημάτων του υπολογιστή. 4 Περιγραφή των διαφόρων μονάδων του Η/Υ θα δούμε στο Κεφάλαιο 3. 2-10