Εισαγωγή στην επιστήµη των υπολογιστών Πράξεις µε µπιτ 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
Αριθµητικές Πράξεις σε Αριθµούς Κινητής Υποδιαστολής Ελέγχονται τα πρόσηµα. n Αν τα πρόσηµα είναι τα ίδια, προστίθενται οι αριθµοί και αντιστοιχίζεται το πρόσηµο στο αποτέλεσµα. n Αν τα πρόσηµα είναι διαφορετικά, συγκρίνονται οι απόλυτες τιµές, αφαιρείται η µικρότερη από τη µεγαλύτερη, και χρησιµοποιείται το πρόσηµο της µεγαλύτερης στο αποτέλεσµα. Μετακινούνται οι υποδιαστολές ώστε να εξισωθούν οι εκθέτες. Αυτό σηµαίνει ότι αν οι εκθέτες δεν είναι ίδιοι, µετατίθεται προς τα αριστερά η υποδιαστολή του αριθµού µε τον µικρότερο εκθέτη ώστε οι εκθέτες να εξισωθούν. Προστίθενται ή αφαιρούνται τα δεκαδικά µέρη σηµαινόµενα τµήµατα (τόσο συµπεριλαµβάνοντας το ακέραιο µέρος όσο και το κλασµατικό µέρος). Κανονικοποιείται το αποτέλεσµα, πριν από την αποθήκευσή του στη µνήµη. Γίνεται έλεγχος για υπερχείλιση. 23
Αριθµητικές Πράξεις σε Αριθµούς Κινητής Υποδιαστολής Προσθέστε δύο αριθµούς κινητής υποδιαστολής 0 10000100 10110000000000000000000 0 10000010 01100000000000000000000 Λύση n Ο εκθέτης του πρώτου αριθµού είναι 132 127, δηλαδή 5. Ο εκθέτης του δεύτερου αριθµού είναι 130 127, δηλαδή 3. Άρα οι αριθµοί έχουν ως εξής: n +2 5 1,1011 n +2 3 1,011 24
Αριθµητικές Πράξεις σε Αριθµούς Κινητής Υποδιαστολής Εξισώνουµε τους εκθέτες και προσθέτουµε: +2 5 1,10110 +2 5 0,01011 --------------------------------------- +2 5 10,00001 Τώρα κανονικοποιούµε το αποτέλεσµα: +2 6 1,000001 O αριθµός αποθηκεύεται στον υπολογιστή µε την εξής µορφή: 0 10000101 0000010000000000000000000 + (6+127=133) (το κλασµατικό µέρος του 1,000001) 25
Λογικές Πράξεις Η τιµή ενός µπιτ µπορεί να είναι είτε 0 είτε 1. Θεωρούµε ότι n n το 0 αντιπροσωπεύει τη λογική τιµή ψευδής (false) και το 1 αντιπροσωπεύει τη λογική τιµή αληθής (true) Έτσι, µπορούµε για τον χειρισµό των δεδοµένων να εφαρµόζουµε τις πράξεις που ορίζονται στην Άλγεβρα Boole Η Άλγεβρα Boole κατατάσσεται σ ένα ειδικό πεδίο των µαθηµατικών που ονοµάζεται Λογική 26
Λογικές Πράξεις 27
Πίνακες Αλήθειας 28
Μονοµελής Τελεστής 29
Ο Διµελής Τελεστής ΑΝD 30
Ο Διµελής Τελεστής OR 31
Ο Διµελής Τελεστής XOR 32
Εφαρµογές Οι τρεις λογικές διµελείς πράξεις χρησιµοποιούνται για την τροποποίηση σχηµάτων µπιτ. Μπορούν n n n να ενεργοποιούν, να απενεργοποιούν, ή να αντιστρέφουν συγκεκριµένα µπιτ Το σχήµα µπιτ προς τροποποίηση έρχεται n n n Σε σύζευξη (AND), Σε διάζευξη (OR), ή Σε αποκλειστική διάζευξη (XOR) µε το δεύτερο σχήµα µπιτ, το οποίο ονοµάζεται µάσκα 33
Εφαρµογές - Μάσκες Οι µάσκες χρησιµοποιούνται για την τροποποίηση άλλων σχηµάτων µπιτ 34
Εφαρµογή του τελεστή ΑΝD: Απενεργοποίηση συγκεκριµένων µπιτ Μια εφαρµογή του τελεστή AND είναι η απενεργοποίηση συγκεκριµένων µπιτ ενός σχήµατος n Πως; n Δηλ. η επιβολή της τιµής 0 σε αυτά Με µια µάσκα απενεργοποίησης µε το ίδιο πλήθος µπιτ, και µε τιµή 0 στα µπιτ που αντιστοιχούν σε αυτά που θέλουµε να απενεργοποιήσουµε. 35
Κανόνες κατασκευής µάσκας απενεργοποίησης συγκεκριµένων µπιτ Για να απενεργοποιηθεί ένα µπιτ στο σχήµα προορισµού, το αντίστοιχο µπιτ στη µάσκα πρέπει να είναι 0. Για να µείνει ένα µπιτ στο σχήµα προορισµού ως έχει, το αντίστοιχο µπιτ της µάσκας πρέπει να είναι 1. 36
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να απενεργοποιήσετε το 1 o και 3 o από αριστερά και το δύο πρώτα µπιτ από δεξιά ενός σχήµατος µπιτ µήκους 8. 37
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να απενεργοποιήσετε το 1 o και 3 o από αριστερά και το δύο πρώτα µπιτ από δεξιά ενός σχήµατος µπιτ µήκους 8. Λύση: η µάσκα είναι 01011100 και ο τελεστής AND 38
Εφαρµογή του τελεστή ΟR: Eνεργοποίηση συγκεκριµένων µπιτ Μια εφαρµογή του τελεστή OR είναι η ενεργοποίηση συγκεκριµένων µπιτ ενός σχήµατος n Πως; δηλ. η επιβολή της τιµής 1 σε αυτά n Με µια µάσκα ενεργοποίησης µε το ίδιο πλήθος µπιτ και µε τιµή 1 στα µπιτ που αντιστοιχούν σε αυτά που θέλουµε να ενεργοποιήσουµε 39
Κανόνες κατασκευής µάσκας ενεργοποίησης συγκεκριµένων µπιτ Για να ενεργοποιηθεί ένα µπιτ στο σχήµα προορισµού, το αντίστοιχο µπιτ στη µάσκα πρέπει να είναι 1. Για να µείνει ένα µπιτ στο σχήµα προορισµού ως έχει, το αντίστοιχο µπιτ της µάσκας πρέπει να είναι 0. 40
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να ενεργοποιήσετε τα 4 αριστερά µπιτ και το πρώτο δεξί µπιτ ενός σχήµατος µπιτ µήκους 8. 41
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να ενεργοποιήσετε τα 4 αριστερά µπιτ και το πρώτο δεξί µπιτ ενός σχήµατος µπιτ µήκους 8. Λύση: η µάσκα είναι 11110001 και ο τελεστής που θα χρησιµοποιηθεί είναι ο OR 42
Εφαρµογή του τελεστή XΟR: Aντιστροφή συγκεκριµένων µπιτ Μια εφαρµογή του τελεστή ΧΟR είναι η αντιστροφή συγκεκριµένων µπιτ ενός σχήµατος n δηλ. η αλλαγή της τιµής από 0 σε 1 και το αντίστροφο Για να γίνει αυτό χρησιµοποιείται µια µάσκα αντιστροφής µε το ίδιο πλήθος µπιτ και µε τιµή 1 στα µπιτ που αντιστοιχούν σε αυτά που θέλουµε να αντιστρέψουµε. 43
Πίνακες Αλήθειας 44
Κανόνες κατασκευής µάσκας αντιστροφής συγκεκριµένων µπιτ Για να αντιστραφεί ένα µπιτ στο σχήµα προορισµού, το αντίστοιχο µπιτ στη µάσκα πρέπει να είναι 1. Για να µείνει ένα µπιτ ως έχει στο σχήµα προορισµού, το αντίστοιχο µπιτ της µάσκας πρέπει να είναι 0. 45
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να αντιστρέψετε τα 5 αριστερά µπιτ του σχήµατος 10100110 46
Παράδειγµα Χρησιµοποιείστε µια µάσκα για να αντιστρέψετε τα 5 αριστερά µπιτ του σχήµατος 10100110 Λύση Η µάσκα είναι 11111000 47
Ερωτήσεις; 48