Δυαδικοσ πολλαπλαςιαςμοσ και διαιρεςη ακεραιων Δρ. Χρήστος Ηλιούδης
Πολλαπλαςιαςμόσ μη προςημαςμζνων ακεραίων βρίςκουμε ζνα άκροιςμα το οποίο αποτελείται από μετατοπιςμζνα γινόμενα, τα οποία προζκυψαν από τον πολ/μό των ψθφίων του πολλαπλαςιαςτι με τον πολλαπλαςιαςτζο. 2
Παράδειγμα 1011 10 1011 2 Πολλαπλαςιαςτζοσ x 1100 10 x 1100 2 Πολλαπλαςιαςτισ 0000 0000 0000 0000 Μετατοπιςμζνα 1011 1011 γινόμενα. + 1011 + 1011 1112100 10 10000100 2 Γινόμενο. 3
Μερικά ακροίςματα και μετατοπιςμζνο γινόμενο Μια άλλθ μζκοδοσ, είναι αυτι όπου κάκε μετατοπιςμζνο γινόμενο προςτίκεται αμζςωσ ς' ζνα μερικό άκροιςμα το οποίο μεταβάλλεται ςε τελικό όταν τελειϊςει ο πολ/μόσ. 4
Παράδειγμα 1011 x 1100 00000000 1ο μερικό άκροιςμα + 0000 1o μετατοπιςμζνο γινόμενο. 00000000 2ο μερικό άκροιςμα. + 0000 2ο μετατοπιςμζνο γινόμενο. 00000000 3ο μερικό άκροιςμα. + 1011 3ο μετατοπιςμζνο γινόμενο. 00101100 4ο μερικό άκροιςμα. + 1011 4ο μετατοπιςμζνο γινόμενο. 10000100 τελικό γινόμενο. 5
Πολλαπλαςιαςμόσ προςημαςμζνων ακεραίων αριθμών Μζγεθοσ φςτημα Πρόςημο Πολ/ηουμε τισ απόλυτεσ τιμζσ των παραγόντων του πολ/μοφ και μετά χαρακτθρίηουμε το γινόμενο κετικό, αν οι παράγοντεσ είναι ομόςθμοι και αρνθτικό αν είναι ετερόςθμοι. 6
Πολλαπλαςιαςμόσ προςημαςμζνων ακεραίων αριθμών ςτο φςτημα Σ2 φςτημα Σ2 : Για να κάνουμε πολ/μό ςτο ςφςτθμα αυτό ακολουκοφμε τον παρακάτω αλγόρικμο: Β0 : Υπολογίηουμε το μζγεκοσ του πολλαπλαςιαςτζου και του πολλαπλαςιαςτι Β1 : Υπολογίηουμε το γινόμενο των μεγεκϊν Β2 : Βρίςκουμε το πρόςθμο του γινομζνου Β3 : ΑΝ το πρόςθμο είναι αρνθτικό ΤΟΤΕ υπολογίηουμε το ςυμπλιρωμα ωσ προσ 2 του γινομζνου των μεγεκϊν. 7
ζλεγχοσ υπερχείλιςησ Ο ζλεγχοσ υπερχείλιςησ γίνεται ωσ εξισ : ΑΝ το Α μζροσ του γινομζνου( τα n αριςτερά bits ) είναι μθδζν ΣΟΣΕ δεν υπάρχει υπερχείλιςθ ΔΙΑΦΟΡΕΣΙΚΑ υπάρχει υπερχείλιςθ N bits Χ N bits Α μέρος γινομένοσ β μέρος γινομενοσ 8
Παράδειγμα Δεκαδικό ΣΤ2 μεγζκθ -4 1100 μζγεκοσ 0100 κζςθ 4 bits x +2 x 0010 x 0010 κζςθ 4 bits -8 00000000 κζςθ 8 bits + 0000 00000000 + 0100 00001000 ΣΤ2 11111000 =-8 10 Αν θέλοσμε να κάνοσμε έλεγτο σπερπλήρωζης ασηό πρέπει να γίνει ζηο μέγεθος ηοσ αποηελέζμαηος δηλαδή με ηον αριθμό 00001000 9
Διαίρεςη μη προςημαςμζνων ακεραίων Ο αλγόρικμοσ τθσ διαίρεςθσ ςτο δυαδικό ςφςτθμα ακολουκεί τουσ ίδιουσ κανόνεσ, μ' αυτοφσ που χρθςιμοποιοφμε ςτθ δεκαδικι διαίρεςθ. ςτθ περίπτωςθ τθσ δυαδικισ διαίρεςθσ τα μετατοπιςμζνα πολλαπλάςια είναι το μθδζν ι ο ίδιοσ ο διαιρζτθσ. Αυτό ζχει ςαν ςυνζπεια, όπωσ και ςτον πολλαπλαςιαςμό άλλωςτε, ι διαδικαςία τθσ διαίρεςθσ και του πολλαπλαςιαςμοφ να πραγματοποιείται από αλγορίκμουσ που περιλαμβάνουν πρόςκεςθ (ι ζμμεςθ πρόςκεςθ) και μετατόπιςθ. 10
Παραδείγματα Διαιρετζοσ 217 11 Διαιρζτθσ Μετατοπιςμζνο πολ/ςιο Διαιρζτθ - 11 19 Πθλίκο Νζοσ διαιρετζοσ 107 Μετατοπιςμζνο πολ/ςιο Διαιρζτθ - 99 Yπόλοιπο 8 11
Παράδειγμα Διαιρετζοσ 11011001 1011 Διαιρζτθσ Μετατοπιςμζνο πολ/ςιο Διαιρζτθ - 1011 10011 Πθλίκο Nζοσ Διαιρετζοσ 00101 Μετατοπιςμζνο πολ/ςιο διαιρζτθ - 0000 Νζοσ διαιρετζοσ 1010 Μετατοπιςμζνο πολ/ςιο διαιρζτθ - 0000 Νζοσ διαιρετζοσ 10100 Μετατοπιςμζνο πολ/ςιο διαιρζτθ - 1011 Νζοσ διαιρετζοσ 10011 Μετατοπιςμζνο πολ/ςιο διαιρζτθ - 1011 Υπόλοιπο 1000 12
Α μέρος Γιαιρεηέοσ Β μέρος Γιαιρεηέοσ Γιαιρέηης Πηλίκο Υπόλοιπο Όηαν μια ακέπαια διαίπεζη εκηελείηαι από ςπολογιζηή ο διαιπεηέορ ηοποθεηείηαι αςηόμαηα ζε ένα καηασωπηηή με μήκορ διπλάζιο από μια θέζη μνήμηρ δεξιά πποζαναηολιζμένορ 13
Υπερχείλιςθ Παρουςιάηεται όταν ο διαιρζτθσ είναι μθδζν ι όταν το πθλίκο δεν χωράει ςτα n bits. H τελευταία περίπτωςθ ανιχνεφεται ωσ εξισ: Απομονώνουμε το πρώτο μζροσ του διαιρετζου και αν ςυμβαίνει ο διαιρζτθσ να είναι μικρότεροσ ι ίςοσ από αυτό τότε ζχουμε υπερχείλιςθ 14
Να ελεγχκεί αν ςε υπολογιςτι με κζςθ μικουσ 4 bits θ διαίρεςθ 55 : 2 παρουςιάηει υπερχείλιςθ 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 1 overflow bit 15
Διαίρεςη προςημαςμζνων ακεραίων αριθμών: Σφςτθμα πρόςθμο - μζγεκοσ Β0 : Β1 : Β3 : Γίνεται θ δυαδικι διαίρεςθ των μεγεκϊν. Πρόςθμο του υπολοίπου είναι το πρόςθμο του διαιρετζου. Πρόςθμο του πθλίκου είναι το αλγεβρικό πρόςθμο του πθλίκου, δθλαδι αν οι παράγοντεσ τθσ διαίρεςθσ είναι ομόςθμοι τότε είναι (+) διαφορετικά είναι (-). 16