Εισαγωγή στην επιστήμη των υπολογιστών Πράξεις με μπιτ 1
Πράξεις με μπιτ 2
Αριθμητικές Πράξεις σε Ακέραιους Πρόσθεση, Αφαίρεση, Πολλαπλασιασμός, Διαίρεση 3
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Πλήθος μονάδων Αποτέλεσμα Καμία 0 Μία 1 Κρατούμενο Δύο 0 1 Τρεις 1 1 Προσθέτουμε δύο μπιτ και μεταφέρουμε το κρατούμενο στην επόμενη στήλη. Αν υπάρχει κάποιο τελικό κρατούμενο μετά την πρόσθεση στην πιο αριστερή στήλη, το αγνοούμε. 4
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε δύο αριθμούς σε αναπαράσταση συμπληρώματος ως προς δύο, με μήκος μπιτ 8 : (+17) + (+22) (+39) 5
Πως μετατρέπουμε έναν θετικό αριθμό σε δυαδική μορφή σε μορφή συμπληρώματος ως προς 2; 6
n Ο αριθμός μετατρέπεται στο δυαδικό σύστημα. n Αν το πλήθος των μπιτ είναι μικρότερο από Ν, προστίθενται μηδενικά στα αριστερά του αριθμού ώστε να υπάρχει ένα σύνολο από Ν μπιτ. n Αν το πρόσημο είναι θετικό, δε χρειάζεται καμία άλλη ενέργεια. 7
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε δύο αριθμούς σε αναπαράσταση συμπληρώματος ως προς δύο, με μήκος μπιτ 8: (+17) + (+22) (+39) Λύση Κρατούμενο 1 0 0 0 1 0 0 0 1 + 0 0 0 1 0 1 1 0 Αποτέλεσμα 0 0 1 0 0 1 1 1 Το αποτέλεσμα είναι 39 στο δεκαδικό σύστημα. 8
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 24 και το 17 αφού πρώτα τους μετατρέψετε σε δυαδικούς αριθμούς σε μορφή συμπληρώματος ως προς δύο, με μήκος μπιτ 8. (+24) + ( 17) (+7) 9
Πως μετατρέπουμε έναν αρνητικό αριθμό σε δυαδική μορφή σε μορφή συμπληρώματος ως προς 2; 10
n n n Ο αριθμός μετατρέπεται στο δυαδικό σύστημα, το πρόσημο αγνοείται. Αν το πλήθος των μπιτ είναι μικρότερο από Ν, προστίθενται μηδενικά στα αριστερά του αριθμού ώστε να υπάρχει ένα σύνολο από Ν μπιτ. Αν το πρόσημο είναι αρνητικό, μένουν ως έχουν όλα τα δεξιότερα 0 και το πρώτο 1. Τα υπόλοιπα μπιτ αντικαθίστανται από το συμπλήρωμά τους. 11
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 24 και το 17 αφού πρώτα τους μετατρέψετε σε δυαδικούς αριθμούς σε μορφή συμπληρώματος ως προς δύο, με μήκος μπιτ 8 Λύση (+24) + ( 17) (+7) Κρατούμενο 1 1 1 1 1 0 0 0 1 1 0 0 0 + 1 1 1 0 1 1 1 1 Αποτέλεσμα 0 0 0 0 0 1 1 1 Προσέξτε ότι το αποτέλεσμα είναι +7 και ότι το τελευταίο κρατούμενο (από την πιο αριστερή στήλη) αγνοείται 12
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 35 και το 20 αφού πρώτα τους μετατρέψετε σε δυαδικούς αριθμούς σε μορφή συμπληρώματος ως προς δύο ( 35) + (+20) ( 15) 13
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 35 και το 20 αφού πρώτα τους μετατρέψετε σε δυαδικούς αριθμούς σε μορφή συμπληρώματος ως προς δύο, με μήκος 8 μπιτ. Λύση ( 35) + (+20) ( 15) Κρατούμενο 1 1 1 1 1 0 1 1 1 0 1 + 0 0 0 1 0 1 0 0 Αποτέλεσμα 1 1 1 1 0 0 0 1 Προσέξτε ότι το αποτέλεσμα είναι 15 (το συμπλήρωμα ως προς δύο του αποτελέσματος είναι το 15). 14
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 127 και το 3 αφού τους μετατρέψετε σε μορφή συμπληρώματος ως προς δύο, με μήκος μπιτ 8. (+127) + (+3) (+130) 15
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Προσθέστε το 127 και το 3, αφού πρώτα τους μετατρέψετε σε δυαδικούς αριθμούς σε μορφή συμπληρώματος ως προς δύο, με μήκος μπιτ 8. (+127) + (+3) (+130) Λύση Κρατούμενο 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 + 0 0 0 0 0 0 1 1 Αποτέλεσμα 1 0 0 0 0 0 1 0 16
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Εδώ αμέσως παρατηρούμε ένα σφάλμα. n Το πιο αριστερό μπιτ του αποτελέσματος είναι το 1, πράγμα που σημαίνει ότι ο αριθμός είναι αρνητικός (εμείς περιμέναμε θετικό αριθμό). 10000010 n Ποιος είναι αυτός ο αριθμός στο δεκαδικό σύστημα; 17
Πρόσθεση στη μορφή συμπληρώματος ως προς δύο Εδώ αμέσως παρατηρούμε ένα σφάλμα. n Το πιο αριστερό μπιτ του αποτελέσματος είναι το 1, πράγμα που σημαίνει ότι ο αριθμός είναι αρνητικός (εμείς περιμέναμε θετικό αριθμό). 10000010 n Ποιος είναι αυτός ο αριθμός στο δεκαδικό σύστημα; w 10000010 => το συμπλήρωμά του ως προς δύο είναι 01111110 => 126 w Άρα ο αριθμός 10000010 είναι το 126 (και όχι το 130). w Το αποτέλεσμα αυτό οφείλεται στην υπερχείλιση 18
Υπερχείλιση Υπερχείλιση (overflow) ονομάζεται το σφάλμα που παρουσιάζεται όταν προσπαθούμε να αποθηκεύσουμε έναν αριθμό ο οποίος δεν είναι στο διάστημα τιμών που ορίζεται από τη δέσμευση Διάστημα τιμών αριθμών στην αναπαράσταση συμπληρώματος ως προς δύο: 2 N-1 0 (2 N-1 1) 19
Υπερχείλιση 127+1=-128!!! 127+3=-126-128-1=127!!! 20
Αφαίρεση στη μορφή συμπληρώματος ως προς δύο Αριθμός 1 Αριθμός 2 Είναι ισοδύναμο με Αριθμός 1 + ( Αριθμός 2) Αφαιρέστε το 62 από το 101 σε μορφή συμπληρώματος ως προς δύο (+101) (+62) Û (+101) + ( 62) (+39) 21
Αφαίρεση στη μορφή συμπληρώματος ως προς δύο (+101) (+62) Û (+101) + ( 62) (+39) Λύση Κρατούμενο 1 1 0 1 1 0 0 1 0 1 + 1 1 0 0 0 0 1 0 Αποτέλεσμα 0 0 1 0 0 1 1 1 Το αποτέλεσμα είναι +39. Παρατηρήστε ότι το πιο αριστερό κρατούμενο αγνοείται. 22
Λογικές Πράξεις Η τιμή ενός μπιτ μπορεί να είναι είτε 0 είτε 1. Θεωρούμε ότι n n το 0 αντιπροσωπεύει τη λογική τιμή ψευδής (false) και το 1 αντιπροσωπεύει τη λογική τιμή αληθής (true) Έτσι, μπορούμε για τον χειρισμό των δεδομένων να εφαρμόζουμε τις πράξεις που ορίζονται στην Άλγεβρα Boole Η Άλγεβρα Boole κατατάσσεται σ ένα ειδικό πεδίο των μαθηματικών που ονομάζεται Λογική 23
Λογικές Πράξεις 24
Πίνακες Αλήθειας 25
Μονομελής Τελεστής 26
Ο Διμελής Τελεστής ΑΝD 27
Ο Διμελής Τελεστής OR 28
Ο Διμελής Τελεστής XOR 29
Εφαρμογές Οι τρεις λογικές διμελείς πράξεις χρησιμοποιούνται για την τροποποίηση σχημάτων μπιτ. Μπορούν n n n να ενεργοποιούν, να απενεργοποιούν, ή να αντιστρέφουν συγκεκριμένα μπιτ Το σχήμα μπιτ προς τροποποίηση έρχεται n n n Σε σύζευξη (AND), Σε διάζευξη (OR), ή Σε αποκλειστική διάζευξη (XOR) με το δεύτερο σχήμα μπιτ, το οποίο ονομάζεται μάσκα 30
Εφαρμογές - Μάσκες Οι μάσκες χρησιμοποιούνται για την τροποποίηση άλλων σχημάτων μπιτ 31
Εφαρμογή του τελεστή ΑΝD: Απενεργοποίηση συγκεκριμένων μπιτ Μια εφαρμογή του τελεστή AND είναι η απενεργοποίηση συγκεκριμένων μπιτ ενός σχήματος n Πως; n Δηλ. η επιβολή της τιμής 0 σε αυτά Με μια μάσκα απενεργοποίησης με το ίδιο πλήθος μπιτ, και με τιμή 0 στα μπιτ που αντιστοιχούν σε αυτά που θέλουμε να απενεργοποιήσουμε. 32
Κανόνες κατασκευής μάσκας απενεργοποίησης συγκεκριμένων μπιτ Για να απενεργοποιηθεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 0. Για να μείνει ένα μπιτ στο σχήμα προορισμού ως έχει, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 1. 33
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να απενεργοποιήσετε το 1 o και 3 o από αριστερά και το δύο πρώτα μπιτ από δεξιά ενός σχήματος μπιτ μήκους 8. 34
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να απενεργοποιήσετε το 1 o και 3 o από αριστερά και το δύο πρώτα μπιτ από δεξιά ενός σχήματος μπιτ μήκους 8. Λύση: η μάσκα είναι 01011100 και ο τελεστής AND 35
Εφαρμογή του τελεστή ΟR: Eνεργοποίηση συγκεκριμένων μπιτ Μια εφαρμογή του τελεστή OR είναι η ενεργοποίηση συγκεκριμένων μπιτ ενός σχήματος n Πως; δηλ. η επιβολή της τιμής 1 σε αυτά n Με μια μάσκα ενεργοποίησης με το ίδιο πλήθος μπιτ και με τιμή 1 στα μπιτ που αντιστοιχούν σε αυτά που θέλουμε να ενεργοποιήσουμε 36
Κανόνες κατασκευής μάσκας ενεργοποίησης συγκεκριμένων μπιτ Για να ενεργοποιηθεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 1. Για να μείνει ένα μπιτ στο σχήμα προορισμού ως έχει, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 0. 37
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να ενεργοποιήσετε τα 4 αριστερά μπιτ και το πρώτο δεξί μπιτ ενός σχήματος μπιτ μήκους 8. 38
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να ενεργοποιήσετε τα 4 αριστερά μπιτ και το πρώτο δεξί μπιτ ενός σχήματος μπιτ μήκους 8. Λύση: η μάσκα είναι 11110001 και ο τελεστής που θα χρησιμοποιηθεί είναι ο OR 39
Εφαρμογή του τελεστή XΟR: Aντιστροφή συγκεκριμένων μπιτ Μια εφαρμογή του τελεστή ΧΟR είναι η αντιστροφή συγκεκριμένων μπιτ ενός σχήματος n δηλ. η αλλαγή της τιμής από 0 σε 1 και το αντίστροφο Για να γίνει αυτό χρησιμοποιείται μια μάσκα αντιστροφής με το ίδιο πλήθος μπιτ και με τιμή 1 στα μπιτ που αντιστοιχούν σε αυτά που θέλουμε να αντιστρέψουμε. 40
Πίνακες Αλήθειας 41
Κανόνες κατασκευής μάσκας αντιστροφής συγκεκριμένων μπιτ Για να αντιστραφεί ένα μπιτ στο σχήμα προορισμού, το αντίστοιχο μπιτ στη μάσκα πρέπει να είναι 1. Για να μείνει ένα μπιτ ως έχει στο σχήμα προορισμού, το αντίστοιχο μπιτ της μάσκας πρέπει να είναι 0. 42
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να αντιστρέψετε τα 5 αριστερά μπιτ του σχήματος 10100110 43
Παράδειγμα Χρησιμοποιείστε μια μάσκα για να αντιστρέψετε τα 5 αριστερά μπιτ του σχήματος 10100110 Λύση Η μάσκα είναι 11111000 44
Πράξεις Ολίσθησης / Μετατόπισης Μετακινούν τα bits ενός σχήματος bit αριστερά ή δεξιά. Έτσι, αλλάζει η θέση των bits Δύο είδη πράξεων ολίσθησης Λογικές πράξεις ολίσθησης και Αριθμητικές πράξεις ολίσθησης 4.45
Λογικές Πράξεις Ολίσθησης Εφαρμόζονται σε σχήματα bit που αναπαριστούν μη προσημασμένους αριθμούς για να μην αλλάζει το πρόσημο. Δύο είδη: Λογική Μετατόπιση Κυκλική Μετατόπιση 4.46
Δεξιά και Αριστερή Ολίσθηση Η δεξιά ολίσθηση καταργεί το δεξιότερο μπιτ, μετακινεί κάθε μπιτ μία θέση προς τα δεξιά, και προσθέτει ένα 0 ως το πιο αριστερό μπιτ. Η αριστερή ολίσθηση καταργεί το πιο αριστερό μπιτ, μετακινεί κάθε μπιτ μία θέση προς τα αριστερά, και προσθέτει ένα 0 ως το δεξιότερο μπιτ 47
Δεξιά και Αριστερή Ολίσθηση 48
Παράδειγμα Χρησιμοποιείστε αριστερή μετατόπιση στο σχήμα bit 10011000. ΛΥΣΗ Discarded Added
Κυκλική Μετατόπιση/Ολίσθηση
Παράδειγμα Χρησιμοποιείστε αριστερή κυκλική μετατόπιση στο σχήμα bit 10011000. ΛΥΣΗ: Το αριστερότερο bit μετατοπίζεται κυκλικά και γίνεται το δεξιότερο.
Πράξεις Ολίσθησης/Μετατόπισης Πώς μπορει να διαιρεθεί ή να πολλαπλασιαστεί ένας αριθμός με το 2 με τη βοήθεια των πράξεων ολίσθησης; Λύση n Όταν ένα σχήμα μπιτ αναπαριστά κάποιον μη προσημασμένο αριθμό, η δεξιά ολίσθηση διαιρεί τον αριθμό αυτό με το 2 (ακέραια διαίρεση). w Το σχήμα 00111011 αντιπροσωπεύει τον αριθμό 59. Αν ολισθήσουμε τον αριθμό προς τα δεξιά, παίρνουμε 00011101, το οποίο ισούται με 29. w Αν πάλι ολισθήσουμε τον αρχικό αριθμό (59) προς τα αριστερά, παίρνουμε 01110110, το οποίο ισούται με 118. 52
Αριθμητικές Πράξεις Μετατόπισης Υποθέτουν ότι το σχήμα bit είναι ένας προσημασμένος ακέραιος σε συμπλήρωμα ως προς 2. Η δεξιά ολίσθηση χρησιμοποιείται για τη διαίρεση ενός ακεραίου με το 2 (ακέραια διαίρεση), ενώ η αριστερή ολίσθηση για τον πολλαπλασιασμό του ακεραίου με το 2.
Παράδειγμα Χρησιμοποιείστε δεξιά μετατόπιση στο 10011001 που είναι ακέραιος συμπληρώματος ως προς 2. ΛΥΣΗ Το αριστερότερο bit διατηρείται και επίσης αντιγράφεται στο διπλανό δεξί bit. Ο αρχικός αριθμός ήταν 103. Ο νέος είναι το 52, δηλ. το αποτέλεσμα της διαίρεσης του 103 με το 2 με περικοπή στον μικρότερο ακέραιο
Παράδειγμα Χρησιμοποιείστε αριστερή μετατόπιση στο 11011001 που είναι ακέραιος συμπληρώματος ως προς 2. ΛΥΣΗ Το αριστερότερο bit χάνεται και επίσης προστίθεται ένα 0 ως δεξιότερο bit. Ο αρχικός αριθμός ήταν 39. Ο νέος είναι το 78, δηλ. το αποτέλεσμα του πολλαπλασιασμού με το 2. Η πράξη είναι έγκυρη αφού δεν προέκυψε υπερχείλιση.
Παράδειγμα Χρησιμοποιείστε αριστερή μετατόπιση στο 01111111 που είναι ακέραιος συμπληρώματος ως προς 2. ΛΥΣΗ Το αριστερότερο bit χάνεται και επίσης προστίθεται ένα 0 ως δεξιότερο bit. Ο αρχικός αριθμός ήταν 127 και νέος είναι το 2, οπότε δεν έχουμε έγκυρο αποτέλεσμα λόγω υπερχείλισης. Αυτό συνέβη γιατί το 254 (127x2) δεν μπορεί να αποθηκευθεί σε σχήμα μήκους 8 bit.
Παράδειγμα Ο συνδυασμός λογικών πράξεων και λογικών πράξεων μετατόπισης μας παρέχει εργαλεία για χειρισμό σχημάτων bit. Π.χ. αν έχουμε ένα σχήμα bit και πρέπει να χρησιμοποιήσουμε το τρίτο bit από δεξιά, πρέπει να ξέρουμε αν αυτό είναι 0 or 1. Το διαπιστώνουμε ως εξής: Μετατοπίζουμε το σχήμα δύο bit προς τα δεξιά Εφαρμόζουμε στο αποτέλεσμα τον τελεστή AND με μιά μάσκα όπου δεξιά έχει 1 Ελέγχουμε το αποτέλεσμα
Ερωτήσεις; 58