στους Ηλεκτρονικούς Υπολογιστές 5 ο Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ email: leo@mail.ntua.gr url: http://users.ntua.gr/leo
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.
Στα προηγούμενα μaθήματα Συστήματα Αρίθμησης το Δυαδικό Μετατροπή από το ένα σύστημα στο άλλο Αποκωδικοποίηση Κωδικοποίηση Η πρόσθεση στο Δυαδικό H αφαίρεση στο Δυαδικό Παράσταση Αρνητικών Πολλαπλασιασμός Δυαδικών Σταθερή / Κινητή υποδιαστολή Κωδικοποίηση Χαρακτήρων Μέθοδοι Επαλήθευσης Δεδομένων Άλλα Συστήματα Αρίθμησης Ηλεκτρονικά συστήματα vs Βιοϊατρικά συστήματα 2 3
Σταθερή Υποδιαστολή Αριθμητική Σταθερής Υποδιαστολής (fixed point arithmetic): Όπως είδαμε, για μήκος λέξης n bit μπορούμε να παραστήσουμε εύρος ακεραίων +2 n-1-1,,-2 n-1 κατά το μέγιστο (δηλαδή ακόμη και αν δεν παραχωρήσουμε κάποια bit σε κλασματικό). π.χ. Για n=8 σε c 2 (.) το μέγιστο εύρος τιμών είναι: από -128 έως +127 3 4
Κινητή Υποδιαστολή Αριθμητική Κινητής Υποδιαστολής (floating point arithmetic): Κάθε αριθμός εκφράζεται με τη παρακάτω παράσταση όπου: mantissa n 1 exponent sign 12 14 12 m ( ee 1 2 e ne ) 2 ± mm 1 2 m n 1 2 m 2 (s m 1 m n m-1) 2 : η, σε c 2 ( ), έκφραση του συντελεστή (mantissa), και (e 1 e ) n e 2 : ο εκθέτης (exponent) σε μορφή είτε c 2 ( ), είτε πολωμένη. 4 5
Κινητή Υποδιαστολή: το πρότυπο ΙΕΕΕ Κατά το πρότυπο IEEE οι αριθμοί κινητής υποδιαστολής φυλάσσονται στη μορφή s e 1 e n e m 1 m n m-1 Μορφή απλής ακρίβειας (single precision format): n m =24 bit, n e =8 bit Μορφή διπλής ακρίβειας (double precision format): n m =53 bit, n e =11 bit 5 6
Παράδειγμα mantissa n 1 exponent sign 12 14 12 m ( ee 1 2 e ne ) 2 ± mm 1 2 m n 1 2 m 2 s e 1 e 8 m 1 m 23 Να παρασταθεί ο αριθμός 27,75 σε μορφή κινητής υποδιαστολής με λέξη 32 bits που αφιερώνει: 1 bit για το πρόσημο 8 bits για τον πολωμένο εκθέτη κατά 128 και 23 bits για το συντελεστή (single precision format) 7
Κωδικοποίηση Χαρακτήρων Για να μπορεί να γίνει διαχείριση «αλφαριθμητικών χαρακτήρων» δηλ. Γραμμάτων αλφαβήτου: Α,B,C,,Y,Z,a,b,c,,x,y,z Αριθμητικών ψηφίων: 1,2,3,,9,0 Σημείων στίξης:!,., Άλλων συμβόλων: +,-,{,%, Χαρακτήρων ελέγχου: DELETE, ENTER, κλπ γίνεται κωδικοποίησή τους σε ακολουθία δυαδικών ψηφίων συγκεκριμένου μήκους bit. Η αντιστοίχηση (δηλ. κωδικοποίηση) κατά την είσοδο χαρακτήρων στον Η/Υ μέσω του πληκτρολογίου γίνεται από έναν κωδικοποιητή (encoder), που υλοποιεί τον κώδικα δηλ. μετατρέπει κάθε πάτημα του πλήκτρου στην ισοδύναμη ακολουθία δυαδικών ψηφίων. 7 8
Κώδικες ASCII και Unicode Ο κώδικας ASCII (American Standard Code for Information Interchange) κάνει χρήση ακολουθίας 8 δυαδικών ψηφίων, πράγμα που επιτρέπει την απεικόνιση, το πολύ, 2 8 =256 αλφαριθμητικών χαρακτήρων. Παραδείγματα: Α 01000001 2 0 00110000 2 + 00101011 2 DEL 01111111 2 Παρατηρούμε ότι 0 00110000 2 =48 10!!! Παράλογο? Όχι, γιατί στον δυαδικό 0110000 2 αντικατοπτρίζεται ο χαρακτήρας μηδέν (που, π.χ. μπορεί να υπάρχει μέσα σε ένα κείμενο) και όχι η αριθμητική τιμή (δηλ. ο αριθμητικός ακέραιος) μηδέν. Το πρότυπο Unicode παριστά τους χαρακτήρες με ακολουθίες 16 δυαδικών ψηφίων απεικονίζοντας έτσι 2 16 =65536 χαρακτήρες. Το πρότυπο Unicode είναι υπερσύνολο του ASCII και εκτός από την περιοχή ASCII (0 10-255 10 ) έχει «περιοχές» που αντιστοιχούν στην ελληνική γλώσσα (880 10-975 10 ), Κινέζική κλπ.. 8 9
Κεφάλαιο 2 Κωδικοποίηση & Αποκωδικοποίηση Αριθμών & Χαρακτήρων Μέθοδοι Επαλήθευσης Ακρίβειας Δεδομένων Άλλα Συστήματα Αρίθμησης: Οκταδικό & Δεκαεξαδικό 9 10
Μέθοδοι Επαλήθευσης Δεδομένων Πρόβλημα: Κατά την μεταφορά δεδομένων ανάμεσα στα υποσυστήματα του Η/Υ υπάρχει ενδεχόμενο ο αποδέκτης να λάβει διαφορετική πληροφορία από αυτήν που του στέλνει ο πομπός. Λύση: Κάθε φορά, στα bit που αποστέλλονται από τον πομπό προστίθενται ορισμένα επιπλέον bit που χρησιμεύουν στον αποδέκτη για να επιτευχθούν: (i) έλεγχος ακεραιότητας και, ίσως (ανάλογα με μέθοδο), (ii) διόρθωση τυχόν σφαλμάτων των δεδομένων. 10 11
Μέθοδοι Επαλήθευσης Δεδομένων: έλεγχος ακεραιότητας Η Μέθοδος ψηφίου ισοτιμίας (parity bit): Σε κάθε byte δεδομένων που αποστέλλεται από τον πομπό προστίθεται και ένα επιπλέον bit η τιμή του οποίου εξαρτάται από: το είδος της «ισοτιμίας» (δηλ. της σύμβασης) που χρησιμοποιείται και το πλήθος των 1 στο byte δεδομένων. 7 6 5 4 3 2 1 0 Parity bit 1 0 0 1 1 Byte προς Αποστολή 11 12
Μέθοδοι Επαλήθευσης Δεδομένων: έλεγχος ακεραιότητας (συνεχ.) Δηλαδή το parity bit παίρνει στον πομπό τιμή τέτοια έτσι ώστε το συνολικό πλήθος των 1 στο ενιαίο «πεδίο» : parity bit + byte να είναι: Άρτιος στην περίπτωση Άρτιας ισοτιμίας ή Περιττός στην περίπτωση Περιττής ισοτιμίας. Πομπός και δέκτης πρέπει να έχουν προσυμφωνήσει το είδος της ισοτιμίας που χρησιμοποιούν, ώστε όταν ο δέκτης λάβει ένα byte μαζί με το parity bit, αν αυτό δεν συμφωνεί με το πλήθος 1 στo byte να είναι σε θέση να «καταλάβει» ότι η πληροφορία είναι εσφαλμένη, και να ζητήσει από τον πομπό την επαναποστολή της. 12 13
Μέθοδοι Επαλήθευσης Δεδομένων συνεχ. Παράδειγμα: Έστω ένας Η/Υ με άρτια ισοτιμία Πομπός Δέκτης-1 Parity bit 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 Μεταφορά Δεδομένων Δέκτης-2 Data Byte 0 1 0 1 1 0 0 0 1 «Ελήφθη πακέτο με λάθος» «Ελήφθη σωστό πακέτο» Εκτός της μεθόδου της ισοτιμίας έχουν αναπτυχθεί και άλλοι κώδικες ελέγχου ακεραιότητας δεδομένων για περιπτώσεις που δεν είναι επιθυμητή η επαναποστολή, οι οποίοι με χρήση περισσότερων από 1 bit έχουν την δυνατότητα να ανιχνεύουν παραπάνω από 1 λάθη ή ακόμα και να τα διορθώνουν. 13 14
Άλλα Συστήματα Αρίθμησης: το Οκταδικό Γιατί και άλλα συστήματα αρίθμησης? Όταν γράφουμε ένα πρόγραμμα το οποίο δεν είναι σε γλώσσα υψηλού επιπέδου (π.χ. C), αλλά χαμηλού (π.χ. Assembly), τότε όταν γράφουμε ορισμένες σταθερές, διευθύνσεις, κλπ σε δυαδική μορφή, λόγω του μεγάλου πλήθους ψηφίων, μπορεί να γίνει λάθος στην εισαγωγή των δεδομένων. Έτσι προκύπτει η ανάγκη δημιουργίας ενός «συμπαγούς» τρόπου εισαγωγής δεδομένων, που ικανοποιείται με τη χρήση των συστημάτων οκταδικού ή δεκαεξαδικού. Οκταδικό σύστημα (Β=8, D {0, 1, 2, 3, 4, 5, 6, 7} ) : οπότε 3 2 1 0 οκταδικό σε δεκαδικό: ( 1234 ) 8 = 1*8 + 2*8 + 3*8 + 4*8 = ( 668) 10 δεκαδικό σε οκταδικό: 668 10 8 28 83 8 4 3 10 8 ( 668) = ( 1234) 10 8 2 1 οκταδικό σε δυαδικο δυαδικό σε οκταδικο ( 1 2 3 4 ) ( 00) 1010 011100 8 100 010110101 (4 2 6 5) 8 15 14
Άλλα Συστήματα Αρίθμησης: το Δεκαεξαδικό Δεκαεξαδικό σύστημα (Β=16, D {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}): οπότε 10 11 12 13 14 15 2 1 0 δεκαεξαδικό σε δεκαδικό : ( 126 ) 16 = 1*16 + 2*16 + 6*16 = ( 294) 10 δεκαδικό σε δεκαεξαδικό : 3429 10 16 5 214 16 6 13 D δεκαεξαδικό σε δυαδικο 8 Α C 3 1000 1010 1100 0011 ( 3429) ( D65) = 10 16 δυαδικό σε δεκαεξαδικό 10 10111101 0110 2 B D 6 Στις σύγχρονες εφαρμογές H/Y χρησιμοποιείται κυρίως το δεκαεξαδικό σύστημα, γιατί μπορούμε να εκφράσουμε δυαδικούς αριθμούς μεγάλου μήκους με λιγότερα ψηφία και, κατά συνέπεια, με μικρότερη πιθανότητα σφάλματος. 15 16
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.