Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Συστήματα Αρίθμησης Αριθμοί σταθερής και κινητής υποδιαστολής.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Συστήματα Αρίθμησης Αριθμοί σταθερής και κινητής υποδιαστολής."— Μεταγράφημα παρουσίασης:

1 Συστήματα Αρίθμησης Αριθμοί σταθερής και κινητής υποδιαστολής

2 Εισαγωγή  Οι Η/Υ χρησιμοποιούν δυαδικό αριθμητικό σύστημα  Η αναπαράσταση αριθμών σε έναν Η/Υ μπορεί να είναι άλλη μια πηγή σφαλμάτων κατά τους υπολογισμούς  Απαραίτητη η αναπαράσταση αριθμών σε διαφορετικές βάσεις

3 Διάγραμμα παρουσίασης  Αναπαράσταση σταθερής υποδιαστολής Αναπαράσταση πραγματικού αριθμού σε βάση β (2, 8, 16, 10) Αναπαράσταση πραγματικού αριθμού σε βάση β (2, 8, 16, 10) Πράξεις με δυαδικούς αριθμούς Πράξεις με δυαδικούς αριθμούς Μετατροπή αριθμού σε διαφορετικές βάσεις Μετατροπή αριθμού σε διαφορετικές βάσεις Μετατροπή ακέραιου μέρουςΜετατροπή ακέραιου μέρους Μετατροπή δεκαδικού μέρουςΜετατροπή δεκαδικού μέρους  Αναπαράσταση κινητής υποδιαστολής Μέθοδος αποκοπής Μέθοδος αποκοπής Μέθοδος στρογγύλευσης Μέθοδος στρογγύλευσης  Αποθήκευση ακεραίου αριθμού σε Η/Υ

4 Αναπαράσταση σταθερής Υποδιαστολής Έστω x ένας πραγματικός αριθμός με παράσταση σε αριθμητικό σύστημα με βάση β: x = (a n a n-1... a 1 a 0. b 1 b 2...) β και αριθμητική τιμή*: Όπου a i, b i  {0, 1, …, β-1} Η τελεία (. ) διαχωρίζει το ακέραιο μέρος του αριθμού: από το κλασματικό: * Πάντα στο δεκαδικό σύστημα a n a n-1... a 1 a 0 b 1 b 2 b 3...

5 Χρησιμοποιούμενες Βάσεις Όνομα ΒάσηςΒάσηΣύνολο ψηφίων Παράδειγμα Δυαδικό2 {0, 1} 111111.11 2 Δεκαδικό10 {0,1,2,3,4,5,6,7,8,9} 255 10 Δεκαεξαδικό16 {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} FF 16 Οκταδικό8 {0,1,2,3,4,5,6,7} 37.7 8 Δεκαδικό Δεκαεξαδ Δυαδικό 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111

6 Παραδείγματα αριθμών (ABC) 16 = C + 16*B + 16 2 *A = 12 + 16 * 11 + 16 2 * 10 = (2748) 10 (7634) 8 = 4 + 8*3 + 8 2 *6 + 8 3 *7 = 4 + 8(3 + 8(6 + 8(7))) = (3996) 10 (.263) 8 = 2*8 -1 + 6*8 -2 + 3*8 -3 = 8 -3 (3 + 8(6 + 8(2))) = 179/512 = (.3496...) 10 (1101) 2 = 1 + 0*2 + 1*2 2 + 1*2 3 = 1 + 2(0 + 2(1 + 2(1))) = (13) 10 (0.1) 10 = (0.0631 4631 4631... ) 8 = (0.0001 1001 1001...) 2 Η μετατροπή από ένα σύστημα σε άλλο μπορεί να παράγει αριθμούς με άπειρο αριθμό δεκαδικών ψηφίων

7 Βασικές πράξεις με δυαδικούς + 5 7 12 - 7 5 2 * 7 5 35  5 7 ΠΡΟΣΘΕΣΗΑΦΑΙΡΕΣΗΠΟΛ/ΣΜΟΣΔΙΑΙΡΕΣΗ

8 Βασικές πράξεις με δυαδικούς ΠΟΛ/ΣΜΟΣ 111 101 100011 111 000 111 000 ΔΙΑΙΡΕΣΗ 100011101 0111000 1000 101 0011 111 101

9 Μετατροπή σε διαφορετικές βάσεις  Μετατροπή από δυαδικό σε οκταδικό και δεκαεξαδικό και αντίστροφα  Μετατροπή από βάση α σε βάση β. Ακέραιου μέρους Ακέραιου μέρους Με αριθμητική του συστήματος β.Με αριθμητική του συστήματος β. Με αριθμητική του συστήματος α (Διαιρέσεις, αφαιρέσεις).Με αριθμητική του συστήματος α (Διαιρέσεις, αφαιρέσεις). Δεκαδικού μέρους Δεκαδικού μέρους Με αριθμητική του συστήματος β.Με αριθμητική του συστήματος β. Με αριθμητική του συστήματος α. (Πολλαπλασιασμός)Με αριθμητική του συστήματος α. (Πολλαπλασιασμός)

10 2 αδικό  (8 αδικό, 16 αδικό ) Οκταδικό Δυαδικό 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Δεκαεξαδ Δυαδικό 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Κανόνας 1: Αντιστοίχηση τριών δυαδικών ψηφίων σε ένα οκταδικό, ή τεσσάρων δυαδικών ψηφίων σε ένα δεκαεξαδικό. Κανόνας 2: Το ακέραιο μέρος ομαδοποιείται από την υποδιαστολή και αριστερά και το δεκαδικό από την υποδιαστολή και δεξιά 0

11 Παραδείγματα (11011110011) 2 = (011 011 110 011) 2 = (3363) 8 = (0110 1111 0011) 2 = (6F3) 16 (10110111101101.10010011) 2 = (010 110 111 101 101.100 100 110) 2 = (26755.446) 8 = (0010 1101 1110 1101.1001 0011) 2 = (2DED.93) 16 (CB3.15) 16 = (1100 1011 0011.0001 0101) 2 C B 3 1 5 (123.45) 8 = (001 010 011.100 101) 2 1 2 3 4 5

12 Μετατροπή από βάση α σε βάση β  Μετατροπή ακέραιου μέρους Έστω Ν = (a n a n-1... a 1 a 0 ) α ένας ακέραιος αριθμός με βάση το α. Για τη μετατροπή του σε αριθμό του συστήματος β, υπάρχουν δυο αλγόριθμοι Α. Χρησιμοποιώντας αριθμ. με βάση το β Α. Χρησιμοποιώντας αριθμ. με βάση το β Β. Χρησιμοποιώντας αριθμ. με βάση το α 1. Με διαιρέσεις 2. Με αφαιρέσεις Β. Χρησιμοποιώντας αριθμ. με βάση το α 1. Με διαιρέσεις 2. Με αφαιρέσεις

13 Α. Αριθμητική στο σύστημα βάσης β  Γράφουμε τον Ν ως εξής:  Αντικαθιστούμε τα a i και α με τα αντίστοιχα στοιχεία της βάσης β.  Υπολογίζουμε την παράσταση κάνοντας πράξεις στο β-αδικό σύστημα

14 Παράδειγμα Έστω Ν = (187)10 (187) 10 = 7 + 8*10 + 1*102 = 7 + 10(8 + 1(10)) (10) 2 = 1010, (8) 2 =1000, (7) 2 =0111) = (111) 2 + (1010) 2 [(1000) 2 + (1010) 2 (1) 2 ] = (10111011) 2 (1110) 2 = 0 + 2*1 + 2 2 *1 + 2 3 *1 = (0) 8 + (2) 8 [(1) 8 + (2) 8 [(1) 8 + (2) 8 (1) 8 ]] = (16) 8

15 Β. Αριθμητική στο σύστημα βάσης α  Q 1 = πηλ(Ν, β) = c 1 + β(c 2 +... + β(c k ))...) υπο(Ν, β) = c 0  Q 2 = πηλ(Q1, β) = c 2 + β(c 3 +... + β(c k ))...) υπο(Ν, β) = c 1....  Q i+1 = πηλ(Q i, β) υπο(Q i, β) = c i Έστω τελική αναπαράσταση του Ν = (c k c k-1...c 1 c 0 ) b. Η τιμή του Επανάληψη έως Q i+1 = 0

16 Β. Αριθμητική στο σύστημα βάσης α  Είσοδος του αριθμού Ν σε σύστημα βάσης α  Αποθηκεύω το υπόλοιπο του Ν με το β  Θέτω  Επαναλαμβάνω όσο Ν > 0  Η λύση είναι τα αποθηκευμένα υπόλοιπα με ανάποδη σειρά Μέθοδος επαναληπτικής διαίρεσης (Όλες οι πράξεις γίνονται σε αριθμητική α)

17 Παράδειγμα: Μετατροπή δεκαδικού σε δυαδικό 33 2 16 2 8 2 42 2 2 267 1 1 - 66 1 - 32 0 - 16 0 - 8 0 - 4 0 - 2 Δεκαδικός 67 Δυαδικός 100011 Ανάποδη σειρά

18 Παράδειγμα: Μετατροπή δεκαδικού σε δεκαεξαδικό 16135 8 -128 7 (87) 16 =(135) 10 16139 8 -128 11 (8B) 16 =(139) 10 16196 12 -192 4 (C4) 16 =(139) 10 B C

19 main(){ int number, i = 0, bits[Ν]; int number, i = 0, bits[Ν]; printf(“Dose ton arithmo >> “); printf(“Dose ton arithmo >> “); scanf(“%d”, &number); scanf(“%d”, &number); while(number>0) while(number>0) { bits[i] = number % 2; number = number / 2; i = i + 1; }} ΠΡΟΓΡΑΜΜΑ C ΓΙΑ ΜΕΤΑΤΡΟΠΗ AKERAIOY ΣΕ ΔYΑΔΙΚΟ Προσοχή: Ο πίνακας bits περιέχει ανάποδα τα δυαδικά ψηφία Επαναληπτική διαίρεση

20 10 αδικό  (2 αδικό ) Μέθοδος επαναληπτικής αφαίρεσης Βήμα 1: Βήμα 1: Καταγράφουμε από αριστερά προς τα δεξιά όλες τις δυνάμεις του 2, μέχρι να φτάσουμε στην πρώτη δύναμη που είναι μεγαλύτερη από τον αριθμό Ν πχ.Καταγράφουμε από αριστερά προς τα δεξιά όλες τις δυνάμεις του 2, μέχρι να φτάσουμε στην πρώτη δύναμη που είναι μεγαλύτερη από τον αριθμό Ν πχ. 12481632641282565121024 853

21 Βήμα 2: Βήμα 2: Σβήνουμε τη μεγαλύτερη δύναμη από τον αριθμό Ν. Η θέση της δείχνει τον αριθμό των ψηφίων του τελικού αριθμού. πχ.Σβήνουμε τη μεγαλύτερη δύναμη από τον αριθμό Ν. Η θέση της δείχνει τον αριθμό των ψηφίων του τελικού αριθμού. πχ. 12481632641282565121024 853 … Συνέχεια

22 Βήμα 3: Βήμα 3: Αφαιρώ τη μεγαλύτερη τιμή που απομένει από τον αριθμό Ν και βάζω «1» κάτω από τη θέση πχ.Αφαιρώ τη μεγαλύτερη τιμή που απομένει από τον αριθμό Ν και βάζω «1» κάτω από τη θέση πχ. 1248163264128256512 853 - 512 = 341 1 … Συνέχεια

23 Βήμα 4: Για τις υπόλοιπες θέσεις, προσπαθώ να αφαιρέσω κάθε δύναμη του 2 από το προηγούμενο αποτέλεσμα. Βήμα 4: Για τις υπόλοιπες θέσεις, προσπαθώ να αφαιρέσω κάθε δύναμη του 2 από το προηγούμενο αποτέλεσμα. Αν μπορώ να αφαιρέσω βάζω «1» στη συγκεκριμένη θέσηΑν μπορώ να αφαιρέσω βάζω «1» στη συγκεκριμένη θέση Αν δεν μπορώ να αφαιρέσω βάζω «0» στη συγκεκριμένη θέσηΑν δεν μπορώ να αφαιρέσω βάζω «0» στη συγκεκριμένη θέση Επαναλαμβάνω το Βήμα 4, μέχρι να τελειώσουν οι θέσεις Επαναλαμβάνω το Βήμα 4, μέχρι να τελειώσουν οι θέσεις

24 Παράδειγμα 1248163264128256512 1 1 0 1 0 1 0 1 0 1 341 - 256 85 - 128 X 85 - 64 21 - 32 X 853 - 512 341 21 - 16 5 - 8 X 5 - 4 1 - 2 X 1 - 1 0

25 Μετατροπή από βάση α σε βάση β  Μετατροπή δεκαδικού μέρους Έστω Χ = (.b 1 b 2... B n-1 b n ) α ένας δεκαδικός αριθμός με βάση το α. Για τη μετατροπή του σε αριθμό του συστήματος β, υπάρχουν δυο αλγόριθμοι Α. Χρησιμοποιώντας αριθμ. με βάση το β Α. Χρησιμοποιώντας αριθμ. με βάση το β Β. Χρησιμοποιώντας αριθμ. με βάση το α 1. Με διαιρέσεις 2. Με αφαιρέσεις Β. Χρησιμοποιώντας αριθμ. με βάση το α 1. Με διαιρέσεις 2. Με αφαιρέσεις

26 Α. Αριθμητική στο σύστημα βάσης β  Παρόμοια με την περίπτωση του ακεραίου  Αντικαθιστώ τους αριθμούς α και b i και κάνω πράξεις στο β-αδικό πχ. (.265372) 8 = 2*8 -1 + 6*8 -2 + 5*8 -3 + 3*8 -4 + 7*8 -5 + 2*8 -6 = 8-6(2+8(7+8(3+8(5+8(6+8(2)))))) = 92922/262144 = (.354469299) 10

27 Β. Αριθμητική στο σύστημα βάσης α Έστω τελική αναπαράσταση του (X) β = (.d 1 d 2...d k-1 d k ) β στο β-αδικό σύστημα. Παρατηρούμε ότι β*(Χ) β = (d 1.d 2...d k-1 d k ) β δηλαδή d 1 = β*(Χ) β Με τον ίδιο τρόπο καταλήγουμε στο συμπέρασμα: d 2 = β*(.d 2 d 3...d k ) β Η διαδικασία μπορεί να επαναληφθεί έως ότου κάποιο γινόμενο δώσει μόνο ακέραια τιμή (όχι δεκαδικά)

28 Β. Αριθμητική στο σύστημα βάσης α  Είσοδος του δεκ. αριθμού Χ σε σύστημα βάσης α  Αποθηκεύω το ψηφίο που προκύπτει από το ακέραιο μέρος του (β*Χ) α  Θέτω Χ  Δεκαδ[(β*Χ) α ]  Επαναλαμβάνω έως ότου Χ = 0 ή φτάσω έναν προκαθορισμένο αριθμό δεκ. ψηφίων  Η λύση είναι τα αποθηκευμένα υπόλοιπα με την σειρά που υπολογίστηκαν Μέθοδος επαναληπτικού πολλαπλασιασμού (Όλες οι πράξεις γίνονται σε αριθμητική α)

29 main(){ int i = 0, bits[Ν]; float number; int i = 0, bits[Ν]; float number; printf(“Dose ton arithmo >> “); printf(“Dose ton arithmo >> “); scanf(“%f”, &number); scanf(“%f”, &number); while(number!=0 || i<N) while(number!=0 || i<N) { bits[i] = number * 2; number = number-bits[i]; i = i + 1; }} ΠΡΟΓΡΑΜΜΑ C ΓΙΑ ΜΕΤΑΤΡΟΠΗ ΔEKΑΔΙΚΟΥ ΣΕ ΔYΑΔΙΚΟ Προσοχή: Ο πίνακας bits περιέχει σωστά τα δυαδικά ψηφία Επαναληπτικός πολλαπ/μος

30 Παράδειγμα (.2652) 10 σε οκταδικό g0 = (.2652) 10 g1 = Dec(.2652*8) = (.1216) 10 d1 = 2 (8*.2652 = 2.1216) g2 = Dec(.1216*8) = (.9728) 10 d2 = 0 (8*.1216 = 0.9728) g3 = Dec(.9728*8) = (.7824) 10 d3 = 7 (8*.9728 = 7.7824) g4 = Dec(.7824*8) = (.2592) 10 d4 = 6 g5 = Dec(.2592*8) = (.0736) 10 d5 = 2............ Επομένως: (.2652) 10 = (.20762 …) 8 = (.010000111110010 …) 2 (.1) σε δυαδικόg0 = (.1) 10 g1 = Dec(0.1*2) = (0.2) 10 d1 = 0 g2 = Dec(0.2*2) = (0.4) 10 d2 = 0 g3 = Dec(0.4*2) = (0.8) 10 d3 = 0 g4 = Dec(0.8*2) = (0.6) 10 d4 = 1 g5 = Dec(0.6*2) = (0.2) 10 d5 = 1........... Eπομένως: (0.1) 10 = (0.0001 1001 1001 1001...) 2

31 Αναπαράσταση κινητής υποδιαστολής Έστω x ένας πραγματικός αριθμός με παράσταση σε αριθμητικό σύστημα με βάση β: x =  q·β m Όπου (  ) το πρόσημο, β η βάση του αριθμητικού συστήματος και q κανονικοποιημένος αριθμός 1/β ≤ q < 1 Ο εκθέτης m δηλώνει την κανονικοποίηση: πχ. 0.0027826 =.27826 * 10 -2 39.14157 =.3914157 * 10 2 Γενικά q = (.b 1 b 2...) β με b 1 ≠ 0

32 Αναπαράσταση κινητής υποδιαστολής  Σε ένα υπολογιστή m και q πεπερασμένα  Το μέγιστο πλήθος ψηφίων για την αποθήκευση του q λέγεται «ακρίβεια» της μηχανής  Ένας Η/Υ έχει ακρίβεια s: y = fl(x) =  q · β m =  (.d 1 d 2...d s ) β β m mantissa εκθέτης

33 Αναπαράσταση σε Η/Υ  Για την αποθήκευση ενός πραγματικού x σε Η/Υ παίρνουμε τον πλησιέστερο αριθμό q* που επιτρέπει η ακρίβεια. πχ. s = 3, π = 3.14159… fl(π) = 0.314  Ο πλησιέστερος κλασματικός q* για τον x σε μηχανή με ακρίβεια s Μέθοδο αποκοπής: Αγνοούνται τα παραπάνω ψηφία Μέθοδο αποκοπής: Αγνοούνται τα παραπάνω ψηφία Μέθοδο στρογγύλευσης: Το ψηφίο στη θέση s γίνεται 1 αν αυτό που παραλείπεται > ½*β -s Μέθοδο στρογγύλευσης: Το ψηφίο στη θέση s γίνεται 1 αν αυτό που παραλείπεται > ½*β -s q*

34 Παράδειγμα στρογγύλευσης και αποκοπής Σε περίπτωση που |x| > β L, o αριθμός δεν μπορεί να παρασταθεί στη μηχανή (overflow) Σε περίπτωση που |x| < β l-1, ο αριθμός δεν μπορεί να παρασταθεί (underflow) Σε Η/Υ με s = 2 και βάση το 10: l < m < L, και συνήθως l = -L

35 Αποθήκευση σε Η/Υ n-1n-2ss-1s-210 πρόσημοεκθέτης mantissa Εκθέτης m: [0, 2 s-1 ] πχ. Ο αριθμός (16.5) 10 θα αποθηκευτεί σε σύστημα με n=26, s=6 ως εξής: (16.5) 10 = (010000.100) 2 = (.10000100) 2 *2 5 άρα m=(5) 10 = (101) 2 0001010010000100


Κατέβασμα ppt "Συστήματα Αρίθμησης Αριθμοί σταθερής και κινητής υποδιαστολής."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google