Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... ·...

32
Αριθμητικά Συστήματα

Transcript of Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... ·...

Page 1: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Αριθμητικά Συστήματα

Page 2: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Οργάνωση Δεδομένων (1/2)

Bits: Η μικρότερη αριθμητική μονάδα ενός υπολογιστικού συστήματος, η οποία δείχνει δύο καταστάσεις, 0 ή 1 (αληθές η ψευδές).

Nibbles: Μονάδα 4 bit που παριστά 1 δεκαεξαδικό ψηφίο ή 1 δεκαδικό ψηφίο σε BCD.

Bytes: Ομάδα από 8 bit, είναι η μικρότερη μονάδα δεδομένων που μπορεί να διακινηθεί σε ένα υπολογιστικό σύστημα.

Page 3: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Οργάνωση Δεδομένων (2/2)

Words: Ομάδα από 16 bits (2 bytes ή 4 nibbles) που παριστά ένα θετικό αριθμό από 0 ως 65535 ή ένα προσημασμένο από ‐32768 ως 32767.

Double Words: διπλή λέξη (2 λέξεις ή 4 bytes).

Quad Words: τετραπλή λέξη (2 διπλές λέξεις, ή τέσσερις λέξεις ή 8 bytes ή 16 nibbles ή 64 bits).

Page 4: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Λειτουργίες σε bytes, words, dwords και qwords

Page 5: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δεκαδικό σύστημα

Η παράσταση ενός αριθμού D στο δεκαδικό σύστημα δίνεται από τη σχέση: D={… d3 d2 d1 d0 .d‐1 d‐2 d‐3 …}, και η τιμή τουD=i (di 10i ).

Για παράδειγμα το 123.54 μπορεί να γραφτεί σαν: 123.54 = 1102 +2101 +3100 +510‐1 +410‐2

Page 6: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δυαδικό σύστημα

Το δυαδικό σύστημα μοιάζει με το δεκαδικό με τη διαφορά ότι αποτελείται από 2 ψηφία και η δυαδική αναπαράσταση ενός αριθμού πραγματοποιείται με δυνάμεις του δυο ως εξής:

B={… b3 b2 b1 b0 .b‐1 b‐2 b‐3 …} και η τιμή του B=i (bi 2i )

Για παράδειγμα το 1011.011 μπορεί να γραφτεί σαν: 

1011.011 = (1 23)+ (0 22)+(1 21)+(1 20)+

(0 2‐1)+(1 2‐2) +(1 2‐3)= 11.37510

Page 7: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δεκαεξαδικό σύστημα

Οι υπολογιστές βασίζουν τη λειτουργία τους στο δυαδικό σύστημα, όμως οι δυαδικοί αριθμοί αναπαρίστανται στο δεκαεξαδικό για να αποφεύγονται πολύ μεγάλοι δυαδικοί. Το δεκαεξαδικό επιτρέπει την ομαδοποίηση των δυαδικών ψηφίων ανά τέσσερα.   

Η={… h3 h2 h1 h0 .h‐1 h‐2 h‐3 …} και η τιμή του H=i (hi 16i ).

Page 8: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Πίνακας ισοδυναμίας ψηφίων

Page 9: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Σημαντική Σημείωση

Στη διάρκεια του μαθήματος δεν θα γίνει ξανά αναφορά σε πραγματικούς αριθμούς, όπου εμφανίζεται το σύμβολο «.», αυτό θα χρησιμοποιείται απλά για τον οπτικό διαχωρισμό των ψηφίων του αριθμητικού συστήματος, με σκοπό τον καλύτερο χειρισμό και ευκολότερη ανάγνωση από εσάς.

Page 10: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Κώδικες (1/2)

O αριθμός που περιέχεται σε ένα byte μπορεί να ερμηνευθεί με πολλούς τρόπους.

Για παράδειγμα το 01001100bμπορεί να είναι ο δεκαδικός 76, ο δεκαεξαδικός 4Ch ή ο χαρακτήρας “L” στον πίνακα με τους κωδικούςASCII.

H υπόσταση ενός αριθμού καθορίζεται από το χρήστη, ο οποίος τους χειρίζεται όπως απαιτεί η εκάστοτε εφαρμογή.

Page 11: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Κώδικες (2/2)

Δύο από τους πιο συχνά χρησιμοποιούμενους τύπους ή κώδικες, είναι η δεκαδική παράσταση ενός δυαδικού αριθμού (BCD –Binary Coded Decimal) και ο Αμερικάνικος Κώδικας Αντιστοιχιών (American Standard Code for Information Interchange).

Υπάρχουν και άλλοι κώδικες όπως Gray, Baudot, EBCDIC κλπ.  

Page 12: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

ASCII Character Set

Κάθε κομμάτι κειμένου που αποθηκεύεται σεέναν υπολογιστή αναπαριστά τουςχαρακτήρες που εμφανίζονται σε αυτό ωςαριθμούς από μια τυποποιημένη λίστα, ονομαζόμενη ASCII.

Ο ASCII είναι κώδικας των 7 bits, o οποίος εκφράζεται σαν ένα byte όπου το πιο σημαντικό ψηφίο είναι μηδέν ή χρησιμοποιείται σαν ισοτιμία (parity).

Page 13: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

ASCII Character Table

Page 14: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δεκαδικοί με Δυαδική Κωδικοποίηση(Binary Coded Decimals ‐ BCD)

Ο κώδικας BCD χρησιμοποιείται όταν θέλουμε να έχουμε είσοδο, έξοδο και επομένως εσωτερική επεξεργασία δεκαδικών αριθμών.

Ένας δεκαδικός κώδικας: Δεκαδικοί αριθμοί (0..9) κωδικοποιούνται χρησιμοποιώντας  διακριτές δυαδικές λέξεις 4ων bit.

Page 15: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δεκαδικοί με Δυαδική Κωδικοποίηση

Για την κωδικοποίηση αριθμών με n δεκαδικά ψηφία, χρειαζόμαστε 4n bits στο BCDπ.χ. (365)10 = (0011.0110.0101)BCD

Αυτό είναι διαφορετικό από την μετατροπή σε δυαδικό όπου (365)10 = (1.0110.1101)2

Ο κώδικας BCD χρειάζεται περισσότερα bits. Όμως, παρέχει μεγαλύτερη ευκολία στην ανάγνωση/ερμηνεία.

Page 16: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Packed και Unpacked BCD

Packed BCD: Συνεπτυγμένοι είναι οι αριθμοί BCD οι οποίοι περιέχουν δύο δυαδικά ψηφία σε ένα byte. Οι αριθμοί 29h (byte), 3629h (word), 17243629h (double word) είναι BCD σε συνεπτυγμένη μορφή.

Unpacked BCD:  Μη συνεπτυγμένοι είναι οι αριθμοί BCD οι οποίοι περιέχουν ένα δυαδικό ψηφίο σε ένα byte. Οι αριθμοί 09h (byte), 0209h (word), 07040609h (double word) είναι BCD σε μη συνεπτυγμένη μορφή.

Page 17: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Πρόσθεση με BCD (1/2)

Όταν 2 κώδικες BCD προστίθενται:

Εάν το δυαδικό άθροισμα είναι μικρότερο από 10102(=1010), το αποτέλεσμα της πρόσθεσης δίνει έγκυρο και ορθό κώδικα για BCD 

Εάν το δυαδικό άθροισμα είναι ίσο ή μεγαλύτερο από 10102, τότε το αποτέλεσμα της πρόσθεσης δίνει άκυρο ή/και λανθασμένο κώδικα για BCD. Διορθώνεται με την πρόσθεση του 01102 (=610) στο αποτέλεσμα της πρόσθεσης, έτσι ώστε να παραχθεί το σωστό κρατούμενοστο αριστερό ψηφίο.Γιατί 610;

Page 18: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Παράδειγμα: Πρόσθεση 448 & 489 σε BCD.

0100   0100   1000  (448 σε BCD)

0100   1000   1001 (489 σε BCD)

10001   ( > 9, πρόσθεσε 6)

10111 (κρατούμενο 1 στο μεσαίο ψηφίο)

1101  ( > 9, πρόσθεσε 6)

1001 10011 (κρατούμενο 1 στο αριστερότερο ψηφίο)

1001     0011 0111 (κώδικας BCD για  93710)

Πρόσθεση με BCD (2/2)

Page 19: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Διόρθωση Decimal Adjust (ADD)

DAA: Διορθώνει το αποτέλεσμα μετά από πρόσθεση δυο Packed BCD τιμών AL = BCD αριθμός (υψηλό‐χαμηλό ψηφίο)

AF = Κρατούμενο από το χαμηλό BCD ψηφίο

CF = Κρατούμενο από το υψηλό BCD ψηφίο

Αλγόριθμος:  Αν AL>9 ή AF=1

AL=AL+6 ‐‐ AF=1

Αν AL>9F ή CF=1AL=AL+60h ‐‐ CF=1

Page 20: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Διόρθωση Decimal Adjust (SUB)

DAS: Διορθώνει το αποτέλεσμα μετά από αφαίρεση δυο Packed BCD τιμών

Αλγόριθμος:  Αν AL>9 ή AF=1

AL=AL‐6 ‐‐ AF=1

Αν AL>9F ή CF=1AL=AL‐60h ‐‐ CF=1

Page 21: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Λογικές Πράξεις (1/2)

Οι λογικές πράξεις AND, OR, NOT, XOR εκτελούνται bit προς bit μεταξύ δυο δυαδικών αριθμών ίδιου μήκους (Bitwise). Η AND χρησιμοποιείται για το μηδενισμό (λογικό 0) ενός η περισσότερων bits.

Η OR χρησιμοποιείται για την τοποθέτηση (λογικό 1) ενός ή περισσότερων bits.

Η NOT χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης του αριθμού.

Η XOR χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης μερικών bits.

Page 22: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Λογικές Πράξεις (2/2)

Page 23: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Αριθμητικές Πράξεις

Οι δυαδικές αριθμητικές πράξεις εκτελούνται μεταξύ προσημασμένων ή μη προσημασμένων αριθμών.

Το πρόσημο ενός προσημασμένου αριθμού βρίσκεται πάντα στο πιο σημαντικό του bit: ο αριθμός είναι θετικός αν το bit πρόσημου είναι 0, ενώ είναι αρνητικός αν αυτό είναι 1.

Τα υπόλοιπα bits δίνουν το μέτρο του αριθμού.

Page 24: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Συμπλήρωμα ως προς 1

Στην παράσταση με συμπλήρωμα ως προς 1, το μέτρο του αριθμού αποθηκεύεται αφού έχει εφαρμοστεί η δυαδική αντιστροφή (ΝΟΤ) σε όλα τα bits αυτού. 

Βασικό μειονέκτημα και παράδοξο αποτελεί η ύπαρξη διπλής απεικόνισης για το μηδέν (θετικό και αρνητικό μηδέν, 0000.0000b και 1111.1111b αντίστοιχα.

Page 25: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Συμπλήρωμα ως προς 2

Η παράσταση με συμπλήρωμα ως προς 2 επιβάλει το χειρισμό του πιο σημαντικού bit ως πολλαπλασιαστή τιμής ‐1 επί το βάρος που αντιστοιχεί στη θέση του ψηφίου πρόσημου, για 8bit αριθμό ‐27 = ‐128.

Τα υπόλοιπα bits προστίθενται με το βάρος που τους αντιστοιχεί στο αρνητικό βάρος του πιο σημαντικού ψηφίου.

Δεν υπάρχει το πρόβλημα της διπλής αναπαράστασης του μηδενός.

Page 26: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Μετατροπή BCD: (a) packed σε unpacked και (b) το αντίθετο

Page 27: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Ολίσθηση και Περιστροφή

Η ολίσθηση προς τα αριστερά ενός μη προσημασμένου αριθμού κατά n θέσεις ισοδυναμεί με πολλαπλασιασμό με 2n.

Η ολίσθηση προς τα δεξιά ενός μη προσημασμένου αριθμού κατά n θέσεις ισοδυναμεί με διαίρεση δια 2n.

Αριστερή Λογική Ολίσθηση κατα 1

∆εξιά Λογική Ολίσθηση κατα 1

Page 28: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δυαδικό σε ΔεκαδικόΈνας δυαδικός αριθμός μήκους ενός  byte έχει εκατοντάδες, δεκάδες και μονάδες. 

Η μετατροπή γίνεται με τη μέθοδο των διαδοχικών διαιρέσεων, με το 100d=64h και10d=0Ah, προκειμένουνα διαχωριστούν τα ψηφία με το αντίστοιχο βάρος.

Page 29: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δεκαδικό σε ΔεκαεξαδικόΈνας δεκαδικός αριθμός μήκους ενός byte (packed BCD), έχει δεκάδες και μονάδες. 

Η μετατροπή γίνεται αν οι δεκάδες πολλαπλασιαστούν με10d=0Ah και στο αποτέλεσμα προστεθούν οι μονάδες.

Page 30: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Δυαδικό σεASCIIΈνας δυαδικός αριθμός μήκους ενός  byte έχει δύο ψηφία σε hex.

Αρχικά διαχωρίζονται τα  ψηφία και στη συνέχεια ελέγχεται αν κάποιο ψηφίο είναι γράμμα ή αριθμός ώστε να του προστεθεί το 30h ή 37h αντίστοιχα 

Page 31: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

ASCII σε ΔυαδικόΓια να μετατρέψουμε δύο χαρακτήρες ASCII σε δυαδικό αριθμό ενός byte, ελέγχουμε αν καθένας από αυτούς είναι αριθμός ή όχι, ώστε να του αφαιρεθεί το 30h ή 37h αντίστοιχα και μετά κάνουμε σύμπτυξη. 

Page 32: Αριθμητικά Συστήματαeclass.teipir.gr/openeclass/modules/document/file.php... · 2015-03-03 · ή/και λανθασμένο κώδικα γιαbcd.Διορθώνεται

Τέλος Παρουσίασης

Μπορείτε να εξασκηθείτε στις μετατροπές αριθμητικών συστημάτων μέσω της ιστοσελίδας:

http://mprolab.teipir.gr/tutorials/numbers