ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κεφάλαιο 2 Αριθμητικά Συστήματα και Αριθμητική Υπολογιστών Γιώργος Γιαγλής
Περίληψη Κεφαλαίου 2 Ενότητα 1: Αριθμητικά Συστήματα Εισαγωγή στα Αριθμητικά Συστήματα Παράσταση Αριθμών σε Αριθμητικά Συστήματα Αριθμητικά Συστήματα σχετικά με την Πληροφορική Μετατροπές Αριθμών Μεταξύ Διαφορετικών Συστημάτων Δυαδικό Σύστημα και Πράξεις Ενότητα 2: Δυαδικό Σύστημα και Η/Υ Αποθήκευση Φυσικών Αριθμών Αποθήκευση Προσημασμένων Ακεραίων Αριθμών Αποθήκευση Πραγματικών Αριθμών Αποθήκευση Χαρακτήρων, Εικόνων και Ήχων
Το Σημερινό Μάθημα (ενότητα 1) Αριθμητικά Συστήματα Εισαγωγή στα Αριθμητικά Συστήματα Παράσταση Αριθμών σε Αριθμητικά Συστήματα Αριθμητικά Συστήματα σχετικά με την Πληροφορική Μετατροπές Αριθμών Μεταξύ Διαφορετικών Συστημάτων Δυαδικό Σύστημα και Πράξεις
Εισαγωγή στα Αριθμητικά Συστήματα Τι είναι ένα αριθμητικό σύστημα; Μέθοδος αναπαράστασης όλων των δυνατών αριθμών σε κωδικοποίηση β ψηφίων (β=10 για το δεκαδικό, β=2 για το δυαδικό κ.ο.κ.) Με κατάλληλους συνδυασμούς των ψηφίων αναπαριστούμε οποιαδήποτε αριθμητική ποσότητα Γιατί χρειαζόμαστε αριθμητικά συστήματα στον υπολογιστή; Ο υπολογιστής είναι ψηφιακή μηχανή Οι πληροφορίες αποθηκεύονται στη μνήμη του σε μορφή δίτιμων καταστάσεων (π.χ. υψηλή/χαμηλή τάση) Αυτές οι καταστάσεις αναπαριστούνται μέσω δυαδικών ψηφίων, δηλαδή αριθμητικών αναπαραστάσεων που χρησιμοποιούν συνδυασμούς των ψηφίων 0 και 1, δηλαδή του δυαδικού συστήματος
Θεσιακά Αριθμητικά Συστήματα Χαρακτηριστικά θεσιακών αριθμητικών συστημάτων Βάση: ορίζει τον αριθμό των ψηφίων από τα οποία αποτελείται το σύστημα αρίθμησης π.χ. το δεκαδικό σύστημα αρίθμησης έχει 10 διαφορετικά ψηφία (0,1,2,3,4,5,6,7,8,9). Άρα η βάση = 10. Θέση: ορίζει την αξία του ψηφίου στην αριθμητική αναπαράσταση Όσο πιο αριστερά, τόσο περισσότερο σημαντικό είναι το ψηφίο, π.χ. στον αριθμό 234,7 του δεκαδικού συστήματος το 2 συμβολίζει εκατοντάδες, το 3 συμβολίζει δεκάδες κ.ο.κ. Υπάρχουν μη θεσιακά αριθμητικά συστήματα; Ναι, π.χ. το αρχαίο ελληνικό (α, β, γ, ...) και το ρωμαϊκό σύστημα (I, II, III, ...) αρίθμησης Δεν υπήρχε σύμβολο που να συμβολίζει την ανυπαρξία αριθμητικής ποσότητας, δηλαδή το σημερινό μηδέν Δύσχρηστα, για δοκιμάστε να επαληθεύσετε ότι μβ + οζ = ριθ!
Θεσιακά Αριθμητικά Συστήματα Πόσα θεσιακά συστήματα αρίθμησης υπάρχουν; Θεωρητικά άπειρα, ανάλογα με τον αριθμό των ψηφίων που έχουμε στη διάθεση μας (βάση) Δυαδικό σύστημα αρίθμησης: 0,1 Οκταδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7 Πενταδικό σύστημα αρίθμησης: 0,1,2,3,4 Δεκαδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7,8,9 Δεκαεξαδικό σύστημα αρίθμησης: 0,1,2,3,4,5,6,7,8,9,Α,B,C,D,E,F Την πατήσαμε. Χρειάζονται όλα αυτά στην Πληροφορική; Όχι, στους υπολογιστές χρησιμοποιείται το δυαδικό ενώ μερικές φορές χρησιμοποιούνται επίσης το οκταδικό και το δεκαεξαδικό (για την επικοινωνία μεταξύ ανθρώπων, καθώς είναι εύκολες οι μετατροπές από και προς το δυαδικό)
Παράσταση Αριθμού Ένας αριθμός Ν αναπαρίσταται σε οποιοδήποτε αριθμητικό σύστημα με μια ακολουθία ψηφίων. Η θέση κάθε ψηφίου στον αριθμό προσδιορίζει την αξία του. Το πρώτο ψηφίο αριστερά της υποδιαστολής εκφράζει μονάδες (βάση0) Όσο μετακινούμαστε προς τα αριστερά, τα ψηφία εκφράζουν αυξανόμενες δυνάμεις της βάσης του συστήματος (βάση1, βάση2, κτλ) Αντίθετα, προς τα δεξιά της υποδιαστολής τα ψηφία εκφράζουν μειούμενες δυνάμεις της βάσης του συστήματος (βάση-1, βάση-2, κτλ) Έτσι, για παράδειγμα: Ο αριθμός 234.7 του δεκαδικού συστήματος συμβολίζει μια αριθμητική ποσότητα με 2 εκατοντάδες (102), 3 δεκάδες (101), 4 μονάδες (100) και 7 δέκατα της μονάδας (10-1) Ο αριθμός 101.1 του δυαδικού συστήματος συμβολίζει αριθμητική ποσότητα με 1 τετράδα (22), καμία δυάδα (21), 1 μονάδα (20) και 1 δεύτερο της μονάδας (2-1). Δηλαδή, είναι το 5.5 του δεκαδικού συστήματος.
Παράσταση Αριθμού Ένας αριθμός Ν με αναπαράσταση ψηφίων ακακ-1ακ-2...α1α0 , α-1α-2...α-ν όπου α: ψηφία του αριθμού (0 ≤ αi ≤ β-1), κ+1: το πλήθος των ψηφίων πριν την υποδιαστολή ν: το πλήθος των ψηφίων μετά την υποδιαστολή εκφράζεται σε ένα αριθμητικό σύστημα βάσης β ως:
Παραδείγματα (101.1)2=1x22+0x21+1x20+1x2-1=4+0+1+0.5=(5.5)10 (3A.4)16=3x161+10x160+4x16-1=48+10+0.25=(58.25)10 (1111.11)2=? (240)3=? (125)7=? (77.2)8=?
Παραδείγματα Aν μας δοθεί ο (14)10 και μας ζητηθεί να τον εκφράσουμε σε ένα άλλο σύστημα αρίθμησης; Μετατροπή στο εννιαδικό: Το (14)10 αποτελείται από μια εννιάδα και πέντε μονάδες. Έτσι, (14)10=(15)9. Μετατροπή στο πενταδικό: Το (14)10 αποτελείται από δυο πεντάδες και τέσσερις μονάδες. Έτσι, (14)10=(24)5. Μετατροπή στο τριαδικό: Το (14)10 αποτελείται από μια εννιάδα (32), μια τριάδα και δυο μονάδες. Έτσι, (14)10=(112)3. Μετατροπή στο δυαδικό: Το (14)10 αποτελείται από μια οκτάδα (23), μια τετράδα (22), μια δυάδα και καμία μονάδα. Έτσι, (14)10=(1110)2 Κάντε το ίδιο για τον αριθμό (34)10.
Αριθμητικά Συστήματα σχετικά με την Πληροφορική Όπως προαναφέραμε τα συνηθέστερα αριθμητικά συστήματα στην Επιστήμη των Υπολογιστών είναι: Δυαδικό Σύστημα: Έχει ως βάση το δύο και αποτελείται από τα ψηφία 0 και 1, τα οποία ονομάζονται και δυφία (bit, binary digit). Οκταδικό Σύστημα: Έχει ως βάση το οκτώ και αποτελείται από τα οκτώ πρώτα ψηφία του δεκαδικού συστήματος: 0, 1, 2, 3, 4, 5, 6, 7. Δεκαεξαδικό Σύστημα: Έχει ως βάση το δεκαέξι και αποτελείται από τα δέκα ψηφία του δεκαδικού συστήματος συν τα έξι πρώτα κεφαλαία γράμματα του λατινικού αλφαβήτου που αντιστοιχούν στους δεκαδικούς αριθμούς 10 μέχρι και 15: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Μετατροπή στο Δεκαδικό Σύστημα Η μετατροπή ενός αριθµού από ένα οποιοδήποτε αριθµητικό σύστηµα µε βάση β στο δεκαδικό είναι πολύ απλή. Απλά, υπολογίζουµε την τιµή της παράστασης: Μετατροπή του δυαδικού 101101 σε δεκαδικό (101101)2 = 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 32 + 0 + 8 + 4 + 0 + 1 = (45)10 Μετατροπή του οκταδικού 13537 σε δεκαδικό (13537)8 = 1 x 84 + 3 x 83 + 5 x 82 + 3 x 81 + 7 x 80 = 4096 + 1536 + 320 + 24 + 7 = (5983)10
Μετατροπή από το Δεκαδικό Σύστημα Η μετατροπή ενός αριθµού από το δεκαδικό σε ένα οποιοδήποτε αριθµητικό σύστηµα µε βάση β γίνεται χωριστά για το ακέραιο και χωριστά για το κλασµατικό μέρος. Για το ακέραιο μέρος του αριθμού ακολουθούμε την εξής διαδικασία: Βήμα 1ο: Διαιρούμε τον ακέραιο δεκαδικό αριθμό με τη βάση β του συστήματος στο οποίο θέλουμε να κάνουμε μετατροπή και καταγράφουμε το υπόλοιπο αυτής της διαίρεσης. Βήμα 2ο: Όσο έχουμε πηλίκο διαφορετικό του μηδενός συνεχίζουμε να το διαιρούμε το πηλίκο με το β και να καταγράφουμε τα νέα υπόλοιπα. Βήμα 3ο: Όταν το πηλίκο της διαίρεσης γίνει μηδέν, έχουμε τελειώσει με την μετατροπή του ακεραίου μέρους και ο αριθμός που ζητάμε προκύπτει αν καταγράψουμε τα υπόλοιπα από το τελευταίο προς το πρώτο (δηλαδή με την αντίστροφη σειρά που έχουν βρεθεί).
Παραδείγματα (Ακέραιο Μέρος) Μετατροπή του δεκαδικού 41 σε δυαδικό. (41)10 = (101001)2 Μετατροπή του δεκαδικού 129 σε εξαδικό; Μετατροπή του δεκαδικού 153 σε οκταδικό. (153)10 = (231)8 Μετατροπή του δεκαδικού 230 σε δεκαεξαδικό; 41 (2) 20 1 10 5 2 153 (8) 19 1 2 3
Μετατροπή από το Δεκαδικό Σύστημα Για το κλασματικό μέρος του αριθμού ακολουθούμε την εξής διαδικασία: Βήμα 1ο: Πολλαπλασιάζουμε το κλασματικό μέρος του δεκαδικού αριθμού με τη βάση β του συστήματος στο οποίο θέλουμε να κάνουμε μετατροπή και καταγράφουμε το γινόμενο αυτής της διαίρεσης. Βήμα 2ο: Όσο το κλασματικό μέρος του γινόμενου είναι διαφορετικό του μηδέν ή δεν έχουμε επιτύχει τον επιθυμητό βαθμό ακρίβειας στο αριθμητικό σύστημα προορισμού, συνεχίζουμε να πολλαπλασιάζουμε το κλασματικό μέρος του γινόμενου με το β και να καταγράφουμε τα νέα γινόμενα. Βήμα 3ο: Όταν το κλασματικό μέρος του γινόμενου γίνει μηδέν ή έχουμε επιτύχει τον επιθυμητό βαθμό ακρίβειας στο αριθμητικό σύστημα προορισμού, έχουμε τελειώσει με την μετατροπή του κλασματικού μέρους και ο κλασματικός αριθμός που ζητάμε προκύπτει αν καταγράψουμε τα ακέραια μέρη των γινομένων των διαδοχικών πολλαπλασιασμών από το πρώτο προς το τελευταίο (δηλαδή με τη σειρά που έχουν βρεθεί).
Παραδείγματα (Κλασματικό Μέρος) Μετατροπή του δεκαδικού 0,6875 σε δυαδικό. (0,6875)10 = (0,1011)2 Μετατροπή του δεκαδικού 0,129 σε εξαδικό; Μετατροπή του δεκαδικού 0,513 σε οκταδικό σε οκταδικό (ακρίβειας 6 ψηφίων). (0,513)10 = (0,406517...)8 Μετατροπή του δεκαδικού 0,230 σε δεκαεξαδικό; 0,513 X 8 = 4,104 0,104 Χ 0,832 6,656 0,656 5,248 0,248 1,984 0,984 7,878 0,6875 X 2 = 1,375 0,375 Χ 0,75 1,5 0,5 1,0
Επανάληψη Μετατροπής από το Δεκαδικό Η μετατροπή αριθμών του δεκαδικού συστήματος με ακέραιο και κλασματικό μέρος γίνεται όταν μετατρέψουμε χωριστά το ακέραιο και χωριστά το κλασματικό μέρος και συνδυάσουμε μετά τα δύο αποτελέσματα. Για παράδειγμα, η μετατροπή του (41,6875)10 στο δυαδικό γίνεται ως εξής: Ακέραιο: (41)10 = (101001)2 Κλασματικό: (0,6875)10 = (0,1011)2 Άρα συνολικά (41,6875)10 = (101001,1011)2
Μετατροπές μεταξύ άλλων Αριθμητικών Συστημάτων Στη γενική περίπτωση, η μετατροπή αριθμού από ένα οποιοδήποτε αριθμητικό σύστημα σε ένα οποιοδήποτε άλλο γίνεται μέσω ενδιάμεσης μετατροπής στο δεκαδικό σύστημα Μετατροπή του πενταδικού 32,24 στο επταδικό 1ο βήμα: μετατρέπουμε τον πενταδικό αριθμό σε δεκαδικό: (32,24)5 = 3 x 51 + 2 x 50 + 2 x 5-1 + 4 x 5-2 = 15 + 2 + 0,4 + 0,16 = (17,56)10 2ο βήμα: μετατρέπουμε τον δεκαδικό αριθμό στο επταδικό Άρα (32,24)5 = (23,3630...)7 17 (7) 2 3 0,56 X 7 = 3,92 0,92 Χ 6,44 0,44 3,08 0,08
Μετατροπές μεταξύ Δυαδικού και Οκταδικού Η μετατροπή από το δυαδικό στο οκταδικό πραγματοποιείται με το να χωρίσουμε το δυαδικό αριθμό σε τριάδες ψηφίων ξεκινώντας από την υποδιαστολή και προχωρώντας προς τα αριστερά και προς τα δεξιά. Κάθε τριάδα είναι αντίστοιχη με ένα ισοδύναμο οκταδικό ψηφίο Μετατροπή του δυαδικού 1101000110111,011 στο οκταδικό (1101000110111,011)2 = (15067,3)8 Μετατροπή του οκταδικού 3704 στο δυαδικό (3074)8 = (011111000100)2 (00)1 101 000 110 111 , 011 1 5 6 7 3 3 7 4 011 111 000 100
Μετατροπές μεταξύ Δυαδικού και Δεκαεξαδικού Η μετατροπή από το δυαδικό στο δεκαεξαδικό πραγματοποιείται με το να χωρίσουμε το δυαδικό αριθμό σε τετράδες ψηφίων ξεκινώντας από την υποδιαστολή και προχωρώντας προς τα αριστερά και προς τα δεξιά. Κάθε τετράδα είναι αντίστοιχη με ένα ισοδύναμο δεκαεξαδικό ψηφίο Μετατροπή του δυαδικού 10101101,1 σε δεκαεξαδικό (10101101,1)2 = (AD,8)16 Μετατροπή του δεκαεξαδικού 27F41,8 στο δυαδικό (27F41,8)16 = (100111111101000001,1)16 1010 1101 , 1(000) 10(Α) 13(D) 8 2 7 F 4 1 , 8 (00)10 0111 1111 0100 0001 1000
Περίληψη Ποιες μετατροπές μάθαμε: Η µετατροπή ενός αριθµού από ένα αριθµητικό σύστηµα µε βάση β προς το δεκαδικό σύστηµα Η µετατροπή ενός αριθµού από το δεκαδικό σύστηµα προς ένα αριθµητικό σύστηµα µε βάση β. Οι μετατροπές αριθμών μεταξύ άλλων αριθμητικών συστημάτων με ενδιάμεση μετατροπή στο δεκαδικό. Ειδικές μετατροπές μεταξύ δυαδικού-δεκαεξαδικού-οκταδικού
Το Δυαδικό Σύστημα 24=16 23=8 22=4 21=2 20=1 Δεκαδικός 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Οι αριθμοί στο δυαδικό σύστημα δημιουργούνται με συνδυασμούς των βασικών του ψηφίων του, 0 και 1
Πράξεις στο Δυαδικό Σύστημα Οι πράξεις γίνονται όπως και στο δεκαδικό. Προσοχή στις μεταφορές ψηφίων και τα κρατούμενα! Προσθέσεις: 0+0 = 0 1+0 = 0+1 = 1 1+1 = 0 (και 1 κρατούμενο) 1+1+1 = 1 (και 1 κρατούμενο) π.χ. η πρόσθεση των δυαδικών αριθμών 1010,1 και 11,11 Άρα (1010,1)2 + (11,11)2 = (1110,01)2 κρατούμενα (0) (1) 1 , +
Πράξεις στο Δυαδικό Σύστημα Αφαιρέσεις: 0-0 = 1-1 = 0 1-0 = 1 0-1 = 10 - 1 = 1 (και 1 κρατούμενο) 0-1(1) = 10-10 = 0 (και 1 κρατούμενο) 1-1(1) = 11-10 = 1 (και 1 κρατούμενο) Άρα (101,1)2 – (11,11)2 = (1,11)2 κρατούμενα (1) 1 , -
Το Σημερινό Μάθημα (ενότητα 2) Δυαδικό Σύστημα και Η/Υ Αποθήκευση Φυσικών Αποθήκευση Αριθμών Αποθήκευση Προσημασμένων Ακεραίων Αριθμών Αποθήκευση Πραγματικών Αριθμών Αποθήκευση Χαρακτήρων, Εικόνων και Ήχων
Παράσταση Πληροφοριών στον Η/Υ Η παράσταση οποιασδήποτε πληροφορίας σε μια υπολογιστική μηχανή γίνεται σε δυαδική μορφή Στην πραγματικότητα γίνεται με ηλεκτρικά ή μαγνητικά σήματα που μπορούν να πάρουν μόνο δυο τιμές ανοικτό-κλειστό κύκλωμα, υψηλή-χαμηλή τάση, αριστερόστροφη-δεξιόστροφη φορά μαγνήτισης, κτλ. Αναπαριστούμε τις τιμές αυτές με 0 ή 1. Η μικρότερη μονάδα πληροφορίας που μπορεί να παρασταθεί είναι ένα bit (binary digit) Μπορεί να έχει τιμή 0 ή 1 Μια οκτάδα bits αποτελούν ένα byte
Μορφές Πληροφορίας Αριθμοί Χαρακτήρες και άλλες πληροφορίες Αποθηκεύονται με τη δυαδική τους μορφή Γίνονται ειδικές κωδικοποιήσεις για την αναπαράσταση προσήμων και υποδιαστολών Ακέραιοι αριθμοί αποθηκεύονται συνήθως σε 2 bytes ενώ πραγματικοί αριθμοί σε 4 bytes Υπάρχει πάντα όριο στο εύρος αλλά και τη διακριτότητα των αριθμών που μπορούν να αποθηκευτούν Χαρακτήρες και άλλες πληροφορίες Αποθηκεύονται επίσης σε δυαδική μορφή βάσει προσυμφωνημένης κωδικοποίησης (π.χ. ASCII)
Αποθήκευση Φυσικών Αριθμών στον Υπολογιστή Αποθηκεύονται στη δυαδική τους μορφή. Τα όρια των φυσικών αριθμών που μπορούμε να αποθηκεύσουμε εξαρτώνται από το μέγεθος της μνήμης που έχουμε στη διάθεση μας π.χ. Αν έχουμε 2 bytes χώρο μνήμης τότε μπορούμε να αναπαραστήσουμε τους αριθμούς με 16 bit συνολικά Μικρότερος αριθμός είναι το (0000000000000000)2 = (0)10 Μεγαλύτερος αριθμός είναι το (1111111111111111)2 = (65535)10 Παραδείγματα αναπαράστασης (σε H/Y με λέξη 1 byte): o (20)10 = (10100)2. Επειδή ο αριθμός έχει πέντε ψηφία, προσθέτουμε τρία μηδενικά στην αρχή του και αποθηκεύουμε στη μνήμη τον αριθμό 00010100. o (200)10 = (11001000)2. Επειδή ο αριθμός έχει οκτώ ψηφία, δε χρειάζεται να προσθέσουμε τίποτα, οπότε απλά τον αποθηκεύουμε στη μνήμη: 11001000. o (400)10 = (110010000)2. Επειδή ο αριθμός έχει εννέα ψηφία, έχουμε υπερχείλιση και δεν μπορεί να αποθηκευτεί στη μνήμη μας.
Αποθήκευση Προσημασμένων Ακεραίων Αριθμών Υπάρχουν τρεις βασικοί τρόποι κωδικοποίησης για το πρόσημο: Περίπτωση 1η: Χρήση bit προσήμου Το πιο σημαντικό bit κωδικοποιεί το πρόσημο (0 για +, 1 για -) και τα υπόλοιπα κωδικοποιούν σε δυαδική μορφή την απόλυτη τιμή του αριθμού Περίπτωση 2η : Χρήση μορφής συμπληρώματος ως προς 1 Οι θετικοί αριθμοί αρχίζουν από μηδέν και αναπαρίστανται με τη δυαδική τους μορφή Οι αρνητικοί αριθμοί αρχίζουν από ένα και αναπαρίστανται με το συμπλήρωμα τους ως προς 1 Περίπτωση 3η : Χρήση μορφής συμπληρώματος ως προς 2 Οι αρνητικοί αριθμοί αρχίζουν από ένα και αναπαρίστανται με το συμπλήρωμα τους ως προς 2 (δηλαδή με το συμπλήρωμα ως προς 1 συν 1)
Αποθήκευση Ακεραίων (1η Περίπτωση: bit προσήμου) Οι θετικοί αριθμοί αναπαρίστανται με το δυαδικό τους ισοδύναμο Το πιο σημαντικό bit (bit προσήμου) έχει τιμή 0 Βρίσκουμε το δυαδικό ισοδύναμο του αριθμού Συμπληρώνουμε με μηδενικά αν χρειάζεται Οι αρνητικοί αριθμοί αναπαρίστανται με το δυαδικό τους ισοδύναμο Το πιο σημαντικό bit (bit προσήμου) έχει τιμή 1
Αποθήκευση Ακεραίων (1η Περίπτωση: bit προσήμου) Παραδείγματα αναπαράστασης (σε H/Y με λέξη 1 byte): (-4)10 = (-100)2 Επομένως στη μνήμη αποθηκεύεται το (10000100)2 ========================================================== (20)10 = (10100)2 Επομένως στη μνήμη αποθηκεύεται το (00010100)2 Εύρος Αποθήκευσης Μικρότερος αριθμός είναι το (11111111)2 = (-127)10 Μεγαλύτερος αριθμός είναι το (01111111)2 = (+127)10 ενέργεια πρόσημο τιμή 1: πρόσημο 1 2: τιμή 3: προσθήκη 0 ενέργεια πρόσημο Τιμή 1: πρόσημο 2: τιμή 1 3: προσθήκη 0
Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Το συμπλήρωμα ως προς 1 ενός δυαδικού αριθμού είναι ένας άλλος δυαδικός αριθμός του οποίου τα ψηφία είναι ακριβώς αντίστροφα του αρχικού (τα 0 1 και τα 1 0). Παραδείγματα το συμπλήρωμα ως προς 1 του 1010 είναι το 0101 το συμπλήρωμα ως προς 1 του 11001100 είναι το 00110011 1 1
Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Οι θετικοί αριθμοί αναπαρίστανται με το δυαδικό τους ισοδύναμο (όπως και πριν) Βρίσκουμε το δυαδικό ισοδύναμο του αριθμού Συμπληρώνουμε με μηδενικά αν χρειάζεται Οι αρνητικοί αριθμοί αναπαρίστανται με το συμπλήρωμα τους ως προς 1 Συμπληρώνουμε με μηδενικά μπροστά αν χρειάζεται ώστε το μήκος του αριθμού να είναι ίσο με το μήκος λέξης του υπολογιστή Βρίσκουμε το συμπλήρωμα ως προς 1 του αριθμού
Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Αποθήκευση Ακεραίων (2η Περίπτωση: συμπλήρωμα ως προς 1) Παράδειγμα αναπαράστασης (σε H/Y με λέξη 1 byte): (-4)10 = (-100)2 Επομένως στη μνήμη αποθηκεύεται το (11111011)2 (20)10 = (10100)2 το (00010100)2 Εύρος αποθήκευσης Μικρότερος αριθμός είναι το (10000000)2 = (-127)10 Μεγαλύτερος αριθμός είναι το (01111111)2 = (+127)10 ενέργεια πρόσημο τιμή 1: τιμή αριθμού 1 2: συμπλήρωση με 0 3: συμπλήρωμα ως προς 1 ενέργεια πρόσημο τιμή 1: τιμή αριθμού 1 2: συμπλήρωση με 0 3: συμπλήρωμα ως προς 1 Όχι (θετικός)
Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Το συμπλήρωμα ως προς 2 ενός δυαδικού αριθμού είναι ο αριθμός που προκύπτει αν προσθέσουμε 1 στο συμπλήρωμα ως προς 1 του αριθμού αυτού Παραδείγματα το συμπλήρωμα ως προς 2 του 1010 είναι το 0110 το συμπλήρωμα ως προς 2 του 11001100 είναι το 00110100 1 + 1 +
Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Οι θετικοί αριθμοί αναπαρίστανται με το δυαδικό τους ισοδύναμο (όπως και πριν) Βρίσκουμε το δυαδικό ισοδύναμο του αριθμού Συμπληρώνουμε με μηδενικά αν χρειάζεται Οι αρνητικοί αριθμοί αναπαρίστανται με το συμπλήρωμα τους ως προς 2 Συμπληρώνουμε με μηδενικά μπροστά αν χρειάζεται ώστε το μήκος του αριθμού να είναι ίσο με το μήκος λέξης του υπολογιστή Βρίσκουμε το συμπλήρωμα ως προς 2 του αριθμού
Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Αποθήκευση Ακεραίων (3η Περίπτωση: συμπλήρωμα ως προς 2) Παράδειγμα αναπαράστασης (σε H/Y με λέξη 1 byte): (-4)10 = (-100)2 Επομένως στη μνήμη αποθηκεύεται το (11111100)2 ============================================= (20)10 = (10100)2 το (00010100)2 Εύρος Αποθήκευσης Μικρότερος αριθμός είναι το (10000000)2 = (-128)10 Μεγαλύτερος αριθμός είναι το (01111111)2 = (+127)10 ενέργεια πρόσημο τιμή 1: τιμή 1 2: συμπλήρωση με 0 3: συμπλήρωμα ως προς 1 4: πρόσθεση 1 ενέργεια πρόσημο τιμή 1: τιμή 1 2: συμπλήρωση με 0 3: συμπλήρωμα Όχι (θετικός)
Αποθήκευση Προσημασμένων Ακεραίων Αριθμών (σημειώσεις) Οι θετικοί αριθμοί αναπαρίστανται με τον ίδιο τρόπο, ανεξάρτητα από τη μέθοδο κωδικοποίησης Οι αρνητικοί αριθμοί αναπαρίστανται όμως διαφορετικά Οι αρνητικοί αριθμοί αρχίζουν πάντα από 1, ανεξάρτητα από τη μέθοδο κωδικοποίησης Οι θετικοί αρχίζουν πάντα από 0 Στην κωδικοποίηση με bit προσήμου και στην κωδικοποίηση με συμπλήρωμα ως προς 1, υπάρχουν δυο κωδικοποιήσεις για το μηδέν +0 = (00000000)2 -0 = (10000000)2 ή (11111111)2 Αυτό το πρόβλημα δεν υπάρχει στην κωδικοποίηση με χρήση συμπληρώματος ως προς 2 Η κωδικοποίηση με χρήση συμπληρώματος ως προς 2 είναι αυτή που χρησιμοποιείται στους σύγχρονους υπολογιστές
Πράξεις με Προσημασμένους Ακεραίους στον Υπολογιστή Η χρήση συμπληρωμάτων επιτρέπει να μην υπάρχουν στον υπολογιστή κυκλώματα που εκτελούν την πράξη της αφαίρεσης, καθώς οι αφαιρέσεις μπορούν να γίνουν με πρόσθεση: Α – Β ισοδύναμο με Α + Συμπλήρωμα2 Β Παράδειγμα (H/Y με λέξη 1 byte, συμπλήρωμα ως προς 2): Αριθμητική αφαίρεση 111-85: Αφαίρεση 111-85 στον υπολογιστή: Το συμπλήρωμα ως προς 2 του 85 (δηλαδή το -85 στη μνήμη) είναι 10101011 Προσέξτε ότι τώρα οι πράξεις γίνονται με 8 δυαδικά ψηφία (όσο το μήκος λέξης του Η/Υ) και το τυχόν επιπλέον bit αποκόπτεται (υπερχείλιση) χωρίς να συμβαίνει λάθος 1 - 8 5 2 6 1 + - 8 5 (1) 2 6
Παράσταση Πραγματικών Αριθμών Υπάρχουν δυο τρόποι κωδικοποίησης: Περίπτωση 1η: Παράσταση Σταθερής Υποδιαστολής Ο αριθμός αποθηκεύεται ως έχει (στην αριθμητική του παράσταση) Υπάρχει σταθερός αριθμός bit για το ακέραιο και για το κλασματικό μέρος του αριθμού (π.χ. 24 και 8 bit για αποθήκευση σε 4 bytes) Συνήθως χρησιμοποιείται παράσταση συμπληρώματος ως προς 2 για τους αρνητικούς Περίπτωση 2η: Παράσταση Κινητής Υποδιαστολής Ο αριθµός αποθηκεύεται στην επιστημονική του παράσταση, δηλαδή σαν το γινόµενο ενός κλασµατικού αριθµού και µίας δύναµης του 2, δηλαδή στη µορφή κ*2ε (το κ καλείται συντελεστής ή μαντίσα και το ε εκθέτης) Χρησιμοποιείται η λεγόμενη κανονική μορφή του αριθμού, όπου το ακέραιο μέρος του αριθμού είναι 1. Χρησιμοποιείται bit προσήμου για τον αριθμό και παράσταση πλεονάσματος για τον εκθέτη (η μαντίσα είναι μη προσημασμένη). Στην παράσταση πλεονάσματος, προστίθεται στον αριθμό το 2Ν-1-1 (Ν ο αριθμός των bits του αριθμού) Υπάρχει σταθερός αριθμός bit για το πρόσημο, τη μαντίσα και τον εκθέτη (π.χ. 1, 23 και 8 bit για αποθήκευση σε 4 bytes)
Παράσταση Πραγματικών Αριθμών (Σταθερής Υποδιαστολής) Παραδείγματα (σε H/Y με λέξη 4 byte, αναπαράσταση με συμπλήρωμα ως προς 2, 24 bit για το ακέραιο μέρος, 8 bit για το κλασματικό): (47,875)10: μετατρέπουμε τον αριθμό σε δυαδικό (101111,111)2 Έπειτα εισάγουμε 18 μηδενικά στην αρχή του ακέραιου μέρους και 5 μηδενικά στο τέλος του κλασματικού για να συμπληρωθούν τα απαραίτητα ψηφία Άρα στη μνήμη: 1ο byte 00000000 2ο byte 00000000 3ο byte 00101111 4ο byte 11100000 (-47,875)10: Βρίσκουμε το συμπλήρωμα ως προς 2 του παραπάνω. Προσοχή: Το συμπλήρωμα βρίσκεται αντιστρέφοντας τα ψηφία του αριθμού και προσθέτοντας 1 στο τέλος του (αγνοούμε την ύπαρξη υποδιαστολής), δηλαδή: Αριθμός: 00 00 00 00 00 00 00 00 00 10 11 11 11 10 00 00 Αντιστροφή: 11 11 11 11 11 11 11 11 11 01 00 00 00 01 11 11 Πρόσθεση 1: 11 11 11 11 11 11 11 11 11 01 00 00 00 10 00 00 1ο byte 11111111 2ο byte 11111111 3ο byte 11010000 4ο byte 00100000
Παράσταση Πραγματικών Αριθμών (Κινητής Υποδιαστολής) Σύμφωνα με τη μέθοδο αυτή, ο αριθμός αποθηκεύεται στη μνήμη του υπολογιστή ως δυο ακέραιοι αριθμοί Κ και Ε Οι αριθμοί αυτοί είναι ο συντελεστής (Κ) και ο εκθέτης (Ε) της λεγόμενης κανονικής επιστημονικής παράστασης του αριθμού Η κανονική επιστημονική παράσταση του δυαδικού αριθμού είναι το γινόμενο ενός αριθμού με ακέραιο μέρος 1 και μιας δύναμης του 2, δηλαδή ένας αριθμός της μορφής 1,Κ × 2Ε Παράδειγμα κανονικής παράστασης (1001,11)2. Μεταφέρουμε την υποδιαστολή τρεις θέσεις προς τα αριστερά ώστε ο αριθμός να γίνει 1,00111. Πολλαπλασιάζουμε τον αριθμό με το 23 (λόγω των 3 μετακινήσεων). Άρα (1001,11)2 = (1,00111)2 × 23 (Κ=00111, Ε=3)
Παράσταση Πραγματικών Αριθμών (Κινητής Υποδιαστολής) Η αποθήκευση του κανονικού αριθμού στη μνήμη του υπολογιστή γίνεται χωριστά για το συντελεστή Κ (μαντίσα) και χωριστά για τον εκθέτη Ε Συνήθως χρησιμοποιούνται 4 byte μνήμης (1 bit για πρόσημο, 23 bits για τη μαντίσα και 8 bits για τον εκθέτη) Ο εκθέτης αποθηκεύεται σε παράσταση πλεονάσματος: εκθέτης+ 2Ν-1-1 (όπου Ν =πλήθος bits για τον εκθέτη) Παράδειγμα παράστασης πλεονάσματος για εκθέτη=6 που θα αποθηκευτεί σε μνήμη 8 bits: 6 + 28-1-1 = 6+27-1 = 133
Παράσταση Πραγματικών Αριθμών (Κινητής Υποδιαστολής) Παράδειγμα (σε H/Y με λέξη 4 byte, 23 bit για τη μαντίσα, 8 bit για τον εκθέτη): Αριθμός: (81,78125)10 Δυαδική αναπαράσταση: (1010001,11001)2 Κανονική μορφή: (1,01000111001)2 × 26 Βit προσήμου: 0 (θετικός αριθμός) Μαντίσα: 01000111001000000000000 (προσθέτουμε μηδενικά στο τέλος, αφού η μαντίσα είναι κλασματικό μέρος!) Εκθέτης: Ε=6, άρα σε παράσταση πλεονάσματος 6 + 28-1 -1 = 133, οπότε (10000101)2 Άρα στη μνήμη: 1
Αποθήκευση Χαρακτήρων Πως αποθηκεύονται στη μνήμη του υπολογιστή οι αλφαριθμητικοί χαρακτήρες (γράμματα, ψηφία και σύμβολα); ASCII (American Standard Code for Information Interchange) Πρότυπο που αντιστοιχεί κάθε χαρακτήρα με ένα ASCII κωδικό (7 ή 8 bit δυαδικός αριθμός) a = 1100001 (ASCII κωδικός) το σύμβολο 1 = 0110001 (ASCII κωδικός) EBCDIC (Extended Binary Code Decimal Interchange Code). Unicode και USC (Universal Character Set, πρότυπο 10646 της ISO/IEC)
Αποθήκευση Εικόνων και Ήχων Εικόνες: τα δυο βασικά συστήματα κωδικοποίησης είναι το ψηφιογραφικό (bitmap) και το διανυσματικό (vector) Τα ψηφιογραφικά συστήματα χωρίζουν την εικόνα σε εικονοστοιχεία ή pixels (picture element). Το χρώμα κάθε κουκίδας κωδικοποιείται σε RGB (24 bits/pixel). Η εικόνα αναπαρίσταται σαν ένας χάρτης από bit (bitmap) που αναπαριστά τα χρώματα όλων των pixel της εικόνας. Τα διανυσματικά συστήματα αναπαριστούν μια εικόνα σαν ένα σύνολο από μαθηματικά διανύσματα, τα οποία αντιστοιχούν σε σημεία, γραμμές, καμπύλες και πολύγωνα από τα οποία αποτελείται η εικόνα αυτή. Οι συνηθέστερα χρησιμοποιούμενες διανυσματικές κωδικοποιήσεις είναι η CGM και η SVG. Χρησιμοποιούνται στα συστήματα κωδικοποίησης γραμματοσειρών οθονών και εκτυπωτών (όπως οι TrueType γραμματοσειρές) και στα συστήματα σχεδίασης μέσω υπολογιστή (CAD) Οι ήχοι κωδικοποιούνται στους υπολογιστές με κατάλληλη δειγματοληψία του πλάτους των ηχητικών κυμάτων σε συγκεκριμένα χρονικά διαστήματα Η αναλογική κυματομορφή μετατρέπεται σε αριθμητική πληροφορία που μπορεί να αναπαρασταθεί με τη χρήση συνδυασμών bit. Η ποιότητα αναπαράστασης εξαρτάται από τη συχνότητα δειγματοληψίας Για παράδειγμα, στα μουσικά CD έχουμε 44.100 δείγματα ανά δευτερόλεπτο, ενώ σε ένα DVD-Audio έχουμε 192.000 δείγματα ανά δευτερόλεπτο
Περίληψη Οι φυσικοί αριθμοί αποθηκεύονται στον υπολογιστή με το δυαδικό τους ισοδύναμο. Οι προσημασμένοι ακέραιοι αριθμοί αποθηκεύονται στον υπολογιστή με ένα από τους εξής τρεις τρόπους: Με χρήση bit προσήμου, όπου το πρώτο bit του αριθμού συμβολίζει το πρόσημο (0 για θετικό, 1 για αρνητικό) και τα υπόλοιπα τον αριθμό. Με χρήση συμπληρώματος ως προς 1 για την αποθήκευση των αρνητικών. Με χρήση συμπληρώματος ως προς 2 για την αποθήκευση των αρνητικών. Ο τρόπος αυτός είναι και ο πλέον συχνά χρησιμοποιούμενος στους σύγχρονους υπολογιστές. Οι πραγματικοί αριθμοί αποθηκεύονται στον υπολογιστή με ένα από τους εξής δυο τρόπους: Με παράσταση σταθερής υποδιαστολής, όπου δεσμεύεται εξ αρχής συγκεκριμένο πλήθος δυαδικών ψηφίων για το ακέραιο και για το κλασματικό μέρος του αριθμού. Με παράσταση κινητής υποδιαστολής, όπου ο αριθμός μετατρέπεται στην κανονική του επιστημονική παράσταση και αποθηκεύεται ως συνδυασμός δυο ακεραίων (μαντίσα και εκθέτης). Ο τρόπος αυτός είναι και ο πλέον συχνά χρησιμοποιούμενος στους σύγχρονους υπολογιστές. Οι χαρακτήρες αποθηκεύονται στον υπολογιστή με κάποιο σύστημα κωδικοποίησης. Τα πιο συχνά χρησιμοποιούμενα είναι το ASCII, το Unicode και το UCS.