Ολίσθηση (shift) ↩️↪️
Στα κυκλώματα των υπολογιστών, τα δεδομένα αποθηκεύονται σε δυαδική μορφή, δηλαδή αποτελούνται μόνο από τα ψηφία 0 και 1, ανεξάρτητα από το πώς τα ορίζει ο προγραμματιστής. Τα δεδομένα αυτά μπορεί να είναι ακέραιοι, πραγματικοί αριθμοί, χαρακτήρες κ.λπ., και αποθηκεύονται σε δυαδικό σύστημα.
Για παράδειγμα, ο αριθμός 17 στο δεκαδικό σύστημα ισοδυναμεί με τον δυαδικό αριθμό 00010001 (σε δυαδικό σύστημα). Αυτός ο δυαδικός αριθμός μπορεί να αποθηκευτεί σε ένα byte.
Μετακίνηση προς τα αριστερά (left shift) ⬅️
Αν μετακινήσουμε τα ψηφία αυτού του αριθμού κατά μία θέση προς τα αριστερά, προσθέτοντας ένα μηδενικό στο τέλος του αριθμού και αγνοώντας το αρχικό 0 (που βρίσκεται στα αριστερά), τότε προκύπτει ο δυαδικός αριθμός 00100010, ο οποίος ισοδυναμεί με τον αριθμό 34 στο δεκαδικό σύστημα.
Μετακίνηση προς τα δεξιά (right shift) ➡️
Αντίθετα, αν μετακινήσουμε τα ψηφία κατά μία θέση προς τα δεξιά, αποκόπτοντας το τελευταίο ψηφίο 1 και βάζοντας μηδενικό μπροστά, τότε ο δυαδικός αριθμός γίνεται 00001000, που ισοδυναμεί με τον δεκαδικό αριθμό 8.
Η ολίσθηση προς τα αριστερά ισοδυναμεί με τον πολλαπλασιασμό επί 2.
Η ολίσθηση προς τα δεξιά ισοδυναμεί με την ακέραια διαίρεση (DIV) διά 2.
Αυτή η διαδικασία είναι χρήσιμη σε πολλές υπολογιστικές εφαρμογές, όπου η αποδοτική επεξεργασία δεδομένων και οι γρήγορες πράξεις είναι απαραίτητες, ιδιαίτερα σε χαμηλού επιπέδου προγραμματισμό και κυκλώματα υλικού.
Πολλαπλασιασμός αλά ρωσικά ✖️
Ο πολλαπλασιασμός αλά ρωσικά είναι μια διαφορετική μέθοδος για τον πολλαπλασιασμό δύο ακέραιων αριθμών. Απαιτεί επαναλαμβανόμενη διαδικασία διπλασιασμού και διαίρεσης μέχρι να φτάσουμε στο τελικό γινόμενο.
Αυτή η μέθοδος υλοποιείται χρησιμοποιώντας τον εξής αλγόριθμο, που βασίζεται σε διαδοχικές επανεκτελέσεις του διπλασιασμού και διαίρεσης.
Αλγόριθμος Πολλαπλασιασμός_αλά_ρωσικά Δεδομένα // M1, M2 // P ← 0 Όσο M2 > 0 επανάλαβε Αν M2 mod 2 = 1 τότε P ← P + M1 M1 ← M1 * 2 M2 ← M2 div 2 Τέλος_επανάληψης Αποτελέσματα // P, το γινόμενο των ακεραίων M1,M2 // Τέλος Πολλαπλασιασμός_αλά_ρωσικά
Πίνακας Υπολογισμού (Σχήμα 2.8)
| M1 | M2 | Συνεισφορά στο άθροισμα |
|---|---|---|
| 45 | 19 | 45 ✔️ |
| 90 | 9 | 90 ✔️ |
| 180 | 4 | 0 ❌ |
| 360 | 2 | 0 ❌ |
| 720 | 1 | 720 ✔️ |
| Άθροισμα | 855 |
Όπως φαίνεται στον παραπάνω πίνακα, το γινόμενο προκύπτει από το άθροισμα των του M1 κάθε φορά που το M2 είναι περιττό.