Πολλαπλασιασμός αλά ρωσικά Ενας τρόπος πολ/μου που χρησιμοποιείται πρακτικά στους Η/Υ, γιατί υλοποιείται σε επίπεδο κυκλωμάτων πιο απλά και γρήγορα από τον γνωστό μας τρόπο πολλαπλασιασμού αφού χρησιμοποιεί τις πράξεις : Ακέραια διαίρεση δια δύο (div) Πολλαπλασιασμό επί 2 (*) Πρόσθεση (+) (Ο κλασσικός πολλαπλασιασμός απαιτεί πολλαπλασιασμό με οποιονδήποτε ακέραιο και πρόσθεση) ΑΕΠΠ - ΚΕΦ 2 6/12/2018
Γιατί ο πολλαπλασιασμός αλά ρωσικά υλοποιείται σε επίπεδο κυκλωμάτων πιο απλά και πιο γρήγορα? Επειδή ο πολ/μος επί δύο και η διαίρεση (div) δια 2, μπορούν να υλοποιηθούν εύκολα με μια απλή εντολή ολίσθησης (shift) , αντίθετα από τον πολλαπλασιασμό με οποιονδήποτε ακέραιο (που απαιτείται στον κλασσικό πολ/μο) που θεωρείται πιο χρονοβόρα διαδικασία Τι είναι η ολίσθηση ? Στον υπολογιστή τα δεδομένα αποθηκεύονται σε δυαδική μορφή, δηλ. σε ακολουθίες 0,1. (πχ η ακολουθία 00010001 = 17) Δεξιά ολίσθηση : 00010001 00001000 = 8 (17 div 2) Αριστερή ολίσθηση : 00010001 00100010 = 34 (17 * 2) ΑΕΠΠ - ΚΕΦ 2 6/12/2018
Πολλαπλασιασμός αλά ρωσικά 45 * 19 = 855 M1 M2 Αριθμός 1ης Στήλης όταν στην 2η υπάρχει περιττός αριθμός ΑΘΡΟΙΣΜΑ ΣΤΗΛΗΣ 3 45 19 ( *2) Div 2 90 9 135 180 4 360 2 720 1 855 1440 ΑΕΠΠ - ΚΕΦ 2 6/12/2018
Πολλαπλασιασμός αλά ρωσικά 40 * 4 = M1 M2 Αριθμός 1ης Στήλης όταν στην 2η υπάρχει περιττός αριθμός ΑΘΡΟΙΣΜΑ ΣΤΗΛΗΣ 3 40 4 ( *2) Div 2 80 2 160 1 320 ΑΕΠΠ - ΚΕΦ 2 6/12/2018
Πολλαπλασιασμός αλά ρωσικά (Αλγόριθμος σε ψευδοκώδικα) Αλγόριθμος Πολλαπλασιασμός_αλά_Ρωσικά Δεδομένα // Μ1,Μ2// P 0 Οσο Μ2>0 επανάλαβε Αν Μ2 mod 2 =1 τότε P P + M1 Μ1 Μ1 * 2 Μ2 Μ2 div 2 Τέλος_επανάληψης Αποτελέσματα // P // Tέλος Πολλαπλασιασμός_αλά_Ρωσικά ΑΕΠΠ - ΚΕΦ 2 6/12/2018