אלגוריתם הדוכן הוא אלגוריתם הכפל המאפשר לנו להכפיל את שני המספרים השלמים הבינאריים החתומים בהשלמה של 2, בהתאמה. הוא משמש גם כדי להאיץ את הביצועים של תהליך הכפל. זה גם מאוד יעיל. זה עובד על סיביות המיתר 0 במכפיל שלא דורש ביט נוסף רק הזז את סיביות המחרוזת הכי ימינה ומחרוזת של 1 במשקל סיביות מכפיל 2קלמשקל 2Mזה יכול להיחשב כ 2k+1- 2M .
להלן הייצוג הציורי של האלגוריתם של ביתן:
בתרשים הזרימה לעיל, תחילה, AC ו שn + 1 סיביות מוגדרות ל-0, וה- SC הוא מונה רצף המייצג את סך הסיביות n, ששווה למספר הביטים במכפיל. יש BR המייצגים את סיביות מרובות, ו-QR מייצג את סיביות מכפיל . לאחר מכן, נתקלנו בשני סיביות מהמכפיל כ-Qנו-Qn + 1, כאשר Qn מייצג את החלק האחרון של QR, ו-Qn + 1מייצג את הסיביות המוגדלות של Qn ב-1. נניח ששתי סיביות של המכפיל שווה ל-10; זה אומר שעלינו להחסיר את המכפיל מהמכפלה החלקית בצובר AC ולאחר מכן לבצע את פעולת ההסטה האריתמטית (אשר). אם שני המכפילים שווים ל-01, זה אומר שעלינו לבצע את חיבור המכפלה למכפלה החלקית במצטבר AC ולאחר מכן לבצע את פעולת ההזזה האריתמטית ( אשר ), כולל שn + 1 . פעולת ההסטה האריתמטית משמשת באלגוריתם של Booth להזזת סיביות AC ו-QR ימינה באחת ונשארת סיבית הסימן ב-AC ללא שינוי. ומונה הרצף מופחת ברציפות עד שהלולאה החישובית חוזרת על עצמה, שווה למספר הסיביות (n).
עובדים על האלגוריתם של Booth
- הגדר את הסיביות הבינאריות של Multiplicand ו-Multiplier כ-M ו-Q, בהתאמה.
- בתחילה, הגדרנו את AC ו-Qn + 1רושם ערך ל-0.
- SC מייצג את מספר סיביות המכפיל (Q), וזהו מונה רצף המופחת ברציפות עד שווה למספר הסיביות (n) או מגיע ל-0.
- Qn מייצג את הסיבית האחרונה של ה-Q, וה-Qn+1מציג את ה-bit המוגדל של Qn ב-1.
- בכל מחזור של אלגוריתם הדוכן, שנו-Qn + 1סיביות ייבדקו על הפרמטרים הבאים כדלקמן:
- כאשר שני ביטים Qנו-Qn + 1הם 00 או 11, אנו פשוט מבצעים את פעולת ההזזה האריתמטית ימינה (אשר) למוצר החלקי AC. והחלקים של Qn ו-Qn + 1מוגדל ב-1 סיביות.
- אם החלקים של Qנו-Qn + 1הוא מראה ל-01, הסיביות המרובות (M) יתווספו ל-AC (אוגר מצבר). לאחר מכן, אנו מבצעים את פעולת ההסטה הנכונה לסיביות AC ו-QR ב-1.
- אם החלקים של Qנו-Qn + 1הוא מראה ל-10, הסיביות המרובות (M) יופחתו מה-AC (אוגר מצבר). לאחר מכן, אנו מבצעים את פעולת ההסטה הנכונה לסיביות AC ו-QR ב-1.
- הפעולה פועלת ברציפות עד שהגענו ל-n - 1 ביט באלגוריתם הדוכן.
- תוצאות הסיביות הבינאריות של הכפל יאוחסנו באוגרי AC ו-QR.
ישנן שתי שיטות בשימוש באלגוריתם של Booth:
10 1 מיליון
1. RSC (Reight Shift Circular)
זה מעביר את הסיביות הכי ימינה של המספר הבינארי, ואז הוא מתווסף לתחילת הסיביות הבינאריות.
2. RSA (חשבון משמרת ימין)
הוא מוסיף את שני הביטים הבינאריים ואז מעביר את התוצאה ימינה במיקום של 1 סיביות.
חסום מודעות יוטיוב אנדרואיד
דוגמא : 0100 + 0110 => 1010, לאחר הוספת המספר הבינארי העבירו כל סיביות ב-1 ימינה והכניסו את הסיביות הראשונה של התוצאה לתחילת הסיביות החדשה.
דוגמה: הכפל את שני המספרים 7 ו-3 באמצעות אלגוריתם הכפל של Booth.
שנים . כאן יש לנו שני מספרים, 7 ו-3. קודם כל, עלינו להמיר את 7 ו-3 למספרים בינאריים כמו 7 = (0111) ו-3 = (0011). כעת הגדר 7 (בבינארי 0111) כמכפיל (M) ו-3 (בבינארי 0011) כמכפיל (Q). ו-SC (ספירת רצף) מייצגת את מספר הביטים, וכאן יש לנו 4 ביטים, אז הגדר את ה-SC = 4. כמו כן, הוא מראה את מספר מחזורי האיטרציה של האלגוריתמים של התא ואז מחזורים רצים SC = SC - פעם אחת.
שנ | שn + 1 | M = (0111) M' + 1 = (1001) ומבצע | AC | ש | שn + 1 | SC |
---|---|---|---|---|---|---|
1 | 0 | התחלתי | 0000 | 0011 | 0 | 4 |
להחסיר (M' + 1) | 1001 | |||||
1001 | ||||||
בצע פעולות אריתמטיות העברה ימנית (אשר) | 1100 | 1001 | 1 | 3 | ||
1 | 1 | בצע פעולות אריתמטיות העברה ימנית (אשר) | 1110 | 0100 | 1 | 2 |
0 | 1 | תוספת (A + M) | 0111 | |||
0101 | 0100 | |||||
בצע פעולת העברה אריתמטית ימינה | 0010 | 1010 | 0 | 1 | ||
0 | 0 | בצע פעולת העברה אריתמטית ימינה | 0001 | 0101 | 0 | 0 |
הדוגמה המספרית של אלגוריתם הכפל של Booth היא 7 x 3 = 21 והייצוג הבינארי של 21 הוא 10101. כאן, נקבל את התוצאה בבינארי 00010101. כעת נמיר אותו לעשרוני, כמו (000010101)10= 2*4 + 2*3 + 2*2 + 2*1 + 2*0 => 21.
בניית אובונטו חיונית
דוגמה: הכפל את שני המספרים 23 ו-9 באמצעות אלגוריתם הכפל של Booth.
כאן, M = 23 = (010111) ו-Q = -9 = (110111)
שנשn + 1 | M = 0 1 0 1 1 1 M' + 1 = 1 0 1 0 0 1 | AC | ש | שn + 1SC |
---|---|---|---|---|
בהתחלה | 000000 | 110111 | 0 6 | |
1 0 | הורידו את M | 101001 | ||
101001 | ||||
בצע פעולת העברה אריתמטית ימינה | 110100 | 111011 | חֲמֵשׁ עֶשׂרֵה | |
אחד עשר | בצע פעולת העברה אריתמטית ימינה | 111010 | 011101 | 1 4 |
אחד עשר | בצע פעולת העברה אריתמטית ימינה | 111101 | 001110 | 1 3 |
0 1 | תוספת (A + M) | 010111 | ||
010100 | ||||
בצע פעולת העברה אריתמטית ימינה | 001010 | 000111 | 0 2 | |
1 0 | הורידו את M | 101001 | ||
110011 | ||||
בצע פעולת העברה אריתמטית ימינה | 111001 | 100011 | אחד עשר | |
אחד עשר | בצע פעולת העברה אריתמטית ימינה | 111100 | 110001 | 1 0 |
שn + 1 = 1, זה אומר שהפלט שלילי.
לפיכך, 23 * -9 = המשלים של 2 של 111100110001 => (00001100111)