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

Post on 05-Aug-2020

2 views 0 download

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

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

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

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

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

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

Οργάνωση Δεδομένων (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).

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

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

Η παράσταση ενός αριθμού 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

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

Το δυαδικό σύστημα μοιάζει με το δεκαδικό με τη διαφορά ότι αποτελείται από 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

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

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

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

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

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

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

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

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

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

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

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

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

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

ASCII Character Set

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

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

ASCII Character Table

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

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

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

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

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

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

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

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 σε μη συνεπτυγμένη μορφή.

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

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

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

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

Παράδειγμα: Πρόσθεση 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)

Διόρθωση 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

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

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

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

AL=AL‐6 ‐‐ AF=1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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