אלגוריתם הכפל של Booth

אלגוריתם הכפל של Booth

אלגוריתם הדוכן הוא אלגוריתם הכפל המאפשר לנו להכפיל את שני המספרים השלמים הבינאריים החתומים בהשלמה של 2, בהתאמה. הוא משמש גם כדי להאיץ את הביצועים של תהליך הכפל. זה גם מאוד יעיל. זה עובד על סיביות המיתר 0 במכפיל שלא דורש ביט נוסף רק הזז את סיביות המחרוזת הכי ימינה ומחרוזת של 1 במשקל סיביות מכפיל 2 ק למשקל 2 M זה יכול להיחשב כ 2 k+1 - 2 M .

להלן הייצוג הציורי של האלגוריתם של ביתן:

תָא

בתרשים הזרימה לעיל, תחילה, AC ו ש n + 1 סיביות מוגדרות ל-0, וה- SC הוא מונה רצף המייצג את סך הסיביות n, ששווה למספר הביטים במכפיל. יש BR המייצגים את סיביות מרובות, ו-QR מייצג את סיביות מכפיל . לאחר מכן, נתקלנו בשני סיביות מהמכפיל כ-Q נ ו-Q n + 1 , כאשר Qn מייצג את החלק האחרון של QR, ו-Q n + 1 מייצג את הסיביות המוגדלות של Qn ב-1. נניח ששתי סיביות של המכפיל שווה ל-10; זה אומר שעלינו להחסיר את המכפיל מהמכפלה החלקית בצובר AC ולאחר מכן לבצע את פעולת ההסטה האריתמטית (אשר). אם שני המכפילים שווים ל-01, זה אומר שעלינו לבצע את חיבור המכפלה למכפלה החלקית במצטבר AC ולאחר מכן לבצע את פעולת ההזזה האריתמטית ( אשר ), כולל ש n + 1 . פעולת ההסטה האריתמטית משמשת באלגוריתם של Booth להזזת סיביות AC ו-QR ימינה באחת ונשארת סיבית הסימן ב-AC ללא שינוי. ומונה הרצף מופחת ברציפות עד שהלולאה החישובית חוזרת על עצמה, שווה למספר הסיביות (n).

עובדים על האלגוריתם של Booth

  1. הגדר את הסיביות הבינאריות של Multiplicand ו-Multiplier כ-M ו-Q, בהתאמה.
  2. בתחילה, הגדרנו את AC ו-Q n + 1 רושם ערך ל-0.
  3. SC מייצג את מספר סיביות המכפיל (Q), וזהו מונה רצף המופחת ברציפות עד שווה למספר הסיביות (n) או מגיע ל-0.
  4. Qn מייצג את הסיבית האחרונה של ה-Q, וה-Q n+1 מציג את ה-bit המוגדל של Qn ב-1.
  5. בכל מחזור של אלגוריתם הדוכן, ש נ ו-Q n + 1 סיביות ייבדקו על הפרמטרים הבאים כדלקמן:
    1. כאשר שני ביטים Q נ ו-Q n + 1 הם 00 או 11, אנו פשוט מבצעים את פעולת ההזזה האריתמטית ימינה (אשר) למוצר החלקי AC. והחלקים של Qn ו-Q n + 1 מוגדל ב-1 סיביות.
    2. אם החלקים של Q נ ו-Q n + 1 הוא מראה ל-01, הסיביות המרובות (M) יתווספו ל-AC (אוגר מצבר). לאחר מכן, אנו מבצעים את פעולת ההסטה הנכונה לסיביות AC ו-QR ב-1.
    3. אם החלקים של Q נ ו-Q n + 1 הוא מראה ל-10, הסיביות המרובות (M) יופחתו מה-AC (אוגר מצבר). לאחר מכן, אנו מבצעים את פעולת ההסטה הנכונה לסיביות AC ו-QR ב-1.
  6. הפעולה פועלת ברציפות עד שהגענו ל-n - 1 ביט באלגוריתם הדוכן.
  7. תוצאות הסיביות הבינאריות של הכפל יאוחסנו באוגרי AC ו-QR.

ישנן שתי שיטות בשימוש באלגוריתם של Booth:

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 + 1 SC
בהתחלה 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)