Κεφάλαιο 2 Κωδικοποίηση & Αποκωδικοποίηση Αριθµών & Χαρακτήρων Αποκωδικοποίηση Κωδικοποίηση Συστήµατα Αρίθµησης το υαδικό Μετατροπή από το ένα σύστηµα στο άλλο Η πρόσθεση & η αφαίρεση στο υαδικό H αφαίρεση στο υαδικό Παράσταση Αρνητικών Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 1
Γιατί οι σύγχρονοι Η/Υ χρησιµοποιούν το δυαδικό σύστηµα? δ( ) A ( ) = δ α 2 10 α 10 β 10 f γ = f γ 10 α, β ( ) γ = δ Γ ( ) 10 10 10 1 10 2 ( ) 1 δ Γ = g Γ 2 g ( A, B ) 2 2 2 A 2 B 2 δ( ) B ( ) = δ β 2 10 Ερώτηµα: Γιατί πρέπει να µεταβούµε στο δυαδικό σύστηµα και µετά να επιστρέψουµε πίσω? Α άντηση: Η ηλεκτρονική υλο οίηση των λογικών πράξεων είναι πολύ πιο εύκολη και αξιόπιστη απ ότι αυτή των αριθµητικών πράξεων Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 2
Γιατί χρειάζονται άλλα (πέραν του δεκαδικού ) συστήµατα αρίθµησης? Boole : αν δύο αριθµοί κωδικοποιηθούν (µετατραπούν) στο δυαδικό σύστηµα τότε η εκτέλεση µαθηµατικών πράξεων (+, *, -, ) ή η εξέταση (πιστοποίηση) λογικών σχέσεων (>,, <,, =,...) µεταξύ τους, µπορούν να υλοποιηθούν µε χρήση των βασικών λογικών τελεστών (ΑΝD, OR, NOT), και µόνο. Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 3
Παρατηρήστε ότι 78532.26 = 78532.26 = Συστήµατα Αρίθµησης ( ) 10 =7*10 + 8*10 + 5*10 + 3*10 + 2*10 + 2*10 + 6*10 4 3 2 1 0 1 2 το οποίο γενικεύεται ως 1 2 1 0. 1 2 ( n n D D... D D D D... m D) B = = D * B +... + D* B + D* B +... + D * B n 1 n 1 0 0 1 1 m m όπου D : Digits = ψηφία, B : Base = βάση ΜSD (Most Significant Digit) LSD(Least Significant Digit) Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 4
Συστήµατα Αρίθµησης: Αποκωδικοποίηση εκαδικό σύστηµα (Β=10, D {0,...,9} ) : οπότε 3496 = 3*10 + 4 *10 + 9 *10 + 6 *10 10 υαδικό σύστηµα (Β=2, D 10102 = 3 2 1 0 {0, 1} ) : οπότε 3 2 1 0 = 1*2 + 0*2 + 1*2 + 0*2 = = 8 + 0 + 2 + 0 = = 10 10 Α οκωδικο οίηση Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 5
Συστήµατα Αρίθµησης: Κωδικοποίηση Μετατροπή του δεκαδικού 10 10 2 0 5 2 1 2 2 Κωδικο οίηση 0 1 στον δυαδικό (1010) 2 Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 6
bit byte - word Κάθε ψηφίο {0,1} ενός δυαδικού αριθµού είναι ένα δυαδικό ψηφίο (BΙnary digit} δηλ. bit Μία οµάδα 8 bit 7 6 5 4 3 2 1 0 αποτελεί ένα byte Ο αριθµός bit που µπορεί να επεξεργασθεί ένας Η/Υ σε ένα κύκλο λειτουργίας του λέγεται ψηφιολέξη (word) n-1 n-2 n-3 n-4 3 2 1 0 Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 7
Πρόσθεση Δυαδικών Ακεραίων 0+0=0 0+1=1 1+0=1 1+1=10 Παραδείγµατα 1 111 11 κρατούµενα 101 1001 1011 1011 10 + 101 + 101 + 11 + 111 1110 10000 1110 Έστω Η/Υ µε ψηφιολέξη=1byte 1100 0100 1001 1000 + overflow digit 10101 1100 Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 8
Αφαίρεση Δυαδικών Ακεραίων 0-0=0 1-0=1 1-1=0 0-1=1 µε δανεισµό από ανώτερη τάξη 0 0 1 1 0 1 Παράδειγµα 1 1 0-1 1 1 η αφαίρεση α αιτεί «λογική»! Βασική Ιδέα: 5-13=5+(-13) δηλ. η αφαίρεση µπορεί γίνει µέσω πρόσθεσης Άρα: ζητούµε µοντέλο παράστασης αριθµών που να: κάνει δυνατή τη παράσταση αρνητικών αριθµών, και είναι τέτοιο ώστε η αφαίρεση να γίνεται άµεσα χωρίς επιπρόσθετη λογική Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 9
Παράσταση Αρνητικών: πρόσηµο-µέτρο (sign and magnitude code) Σύµβαση: το MSD δηλώνει το πρόσηµο (π.χ. 0 : θετικό, 1 : αρνητικό). Παραδ.: +13 10 = 01101 2, -13 10 = 11101 2. Παρατηρήστε: 5 10 = 00101 2 τότε 5-13=5+(-13) (-13) 1 1 1 0 1 (+5) 0 0 1 0 1 + -8 10 1 0 0 0 1 0 2 Λάθος! Αυτή παράσταση, δεν καλύπτει την απαίτηση: «η αφαίρεση να µ ορεί γίνει µέσω ρόσθεσης» Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 10
Παράσταση Αρνητικών: Συµπλήρωµα ως προς 2 (2-complement code) Σύµβαση: Για µήκος λέξης n-bit, το MSD εκφράζει το 2 n-1. Έτσι εκφράζονται οι αριθµοί από (2 n-1-1) έως 2 n-1 π.χ. Αν n=6 τότε εκφράζονται οι αριθµοί από 32 έως 31. -32 16 8 4 2 1 Ποια «τάξη» παριστάνει κάθε στήλη 0 1 1 1 1 1 = 16+8+4+2+1=31 0 0 0 0 0 1 = 1 0 0 0 0 0 0 = 0 1 1 1 1 1 1 = -32+16+8+4+2+1=-1 1 0 0 0 0 0 = -32 Για ένα ακέραιο α, για να βρούµε το συµπλήρωµα του ως προς 2, c 2 (α) : Κάνου- µε αντιστροφή των bits της δυαδικής παράστασης του α, και προσθέτουµε σε αυτό 1 π.χ. α =43-64 32 16 8 4 2 1 0 1 0 1 0 1 1 = 43 1 0 1 0 1 0 0 + 1 1 0 1 0 1 0 1 = c 2 (43) = -43 Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 11
Η Αφαίρεση µε την Παράσταση Συµπληρώµατος ως προς 2 Παραδείγµατα: Αφαίρεση σε 6-µπιτο Η/Υ 5-18 = 5+ (-18) 29 + (-7) -32 16 8 4 2 1-32 16 8 4 2 1 0 1 0 0 1 0 = 18 0 0 0 1 1 1 =7 1 0 1 1 0 1 1 1 1 0 0 0 + 1 + 1 1 0 1 1 1 0 = c 2 (18) 1 1 1 0 0 1 = c 2 (7) + 0 0 0 1 0 1 = 5 + 0 1 1 1 0 1 = 29-32+16+2+1 = 1 1 0 0 1 1 =-13 0 1 0 1 1 0 =22 0 0 (κρατούµενα κατά 1 1 την πρόσθεση) Οι παραπάνω πράξεις είναι σωστές γιατί το κρατούµενο που προστίθεται στο MSD είναι το ίδιο µε το κρατούµενο που εξέρχεται από το MSD. Το αντίθετο, σηµαίνει ότι, για το συγκεκριµένο Η/Υ µε εύρος λέξης n bit, υπερβαίνουµε το εύρος αριθµών που µπορούµε να χειρισθούµε και έχουµε είτε Overflow (υ ερχείλιση), είτε Underflow («υ οχείλιση»). Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 12
Η Αφαίρεση µε την Παράσταση Συµπληρώµατος ως προς 2: Υπερχείλιση & Υποχείλιση Overflow: αποτέλεσµα >(2 n-1-1) Underflow: αποτέλεσµα < 2 n-1 π.χ. n=6, 22 + 22 = 44 π.χ. n=6, -8-31=(-8)+(-31)=-39-32 16 8 4 2 1-32 16 8 4 2 1 0 1 0 1 1 0 = 22 1 1 1 0 0 0 = -8 + 0 1 0 1 1 0 = 22 + 1 0 0 0 0 1 = -31 1 0 1 1 0 0 =-20 44 0 1 1 0 0 1 =25-39 0 1 1 0 ια ίστωση : µε τη παράσταση συµπληρώµατος ως προς 2 γίνεται δυνατή η παράσταση αρνητικών αριθµών, η αφαίρεση γίνεται άµεσα, επιπρόσθετη λογική, και µέσω πρόσθεσης, και χωρίς παρέχει άµεσο µηχανισµό πιστοποίησης των αποτελεσµάτων µέσω των κρατουµένων «εισόδου εις» και «εξόδου α ό» το MSD. Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 13
Παράδειγµα: Θέµα Σεπτεµβρίου 2008 Να εκτελεστεί η πρόσθεση (αφού πρώτα µετατραπούν σε δυαδικούς) µεταξύ των αριθµών -47 10 και -63 10 σε δύο υπολογιστές Α & Β που χρησιµοποιούν την παράσταση συµπληρώµατος ως προς 2. Ο Α έχει µήκος λέξης 7 bitενώ ο Β 8 bit. Τι παρατηρείτε? Μετατροπή σε δυαδικό 47 2 63 2 1 23 2 1 31 2 1 11 2 1 15 2 1 5 2 1 7 2 1 2 2 1 3 2 0 1 1 1 101111 111111 Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 14
Παράδειγµα: συνεχ. 47 10 =101111 2 63 10 =111111 2 Πως παρίστανται τα -47 10,-63 10? Με συµπλήρωµα ως προς 2 αλλά µε πόσα bit? Υπολογιστής Α: 7 bit 6 5 4 3 2 1 0 : bit -64 32 16 8 4 2 1-64 32 16 8 4 2 1 0 1 0 1 1 1 1 =47 10 0 1 1 1 1 1 1 =63 10 1 0 1 0 0 0 0 =c 1 (47) 1 0 0 0 0 0 0 =c 1 (63) + 1 + 1 1 0 1 0 0 0 1 =c 2 (47) 1 0 0 0 0 0 1 =c 2 (63) Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 15
Παράδειγµα: συνεχ. -64 32 16 8 4 2 1 1 0 1 0 0 0 1 =c 2 (47) + 1 0 0 0 0 0 1 =c 2 (63) 1 0 0 1 0 0 1 0 Σωστό ή Λάθος??? 1 0 ΛΑΘΟΣ: γιατί το εισερχόµενο κρατούµενο στο MSD Υπολογιστής Β: 8 bit είναι διαφορετικό από το εξερχόµενο -128 64 32 16 8 4 2 1-128 64 32 16 8 4 2 1 0 0 1 0 1 1 1 1 =47 10 0 0 1 1 1 1 1 1=63 10 1 1 0 1 0 0 0 0 =c 1 (47) 1 1 0 0 0 0 0 0=c 1 (63) + 1 + 1 1 1 0 1 0 0 0 1 =c 2 (47) 1 1 0 0 0 0 0 1 =c 2 (63) Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 16
-128 64 32 16 8 4 2 1 Παράδειγµα: συνεχ. 1 1 0 1 0 0 0 1 =c 2 (47) + 1 1 0 0 0 0 0 1 =c 2 (63) 1 1 0 0 1 0 0 1 0 Σωστό ή Λάθος 1 1 ΣΩΣΤΟ: γιατί το εισερχόµενο κρατούµενο στο MSD Εποµένως: είναι ίδιο µε το εξερχόµενο Επειδή -67+(-43)=-110 είναι λογικό να είναι λανθασµένηη πράξη στον 7-µπιτο Η/Υ ο οποίος µπορεί να παραστήσει κατ ελάχιστον τον αριθµό -64 σωστήη πράξη στον 8-µπιτο Η/Υ ο οποίος µπορεί να παραστήσει κατ ελάχιστον τον αριθµό -128 Οι Η/Υ µέσω ελέγχου του κρατουµένου στο MSDέχουν τη δυνατότητα ελέγχου της ορθότητας των αποτελεσµάτων τους. Κ.Κυριακόπουλος Εισαγωγή στους Η/Υ 17