-
Booth算法
鎖定
Booth算法是一種適合於通過硬件實現的簡便算法
[1]
。將乘數看作從最低位開始的一串二進制數字。Booth算法的基本思路是:對於具有連續0和1的組,需要產生的部分積較少。對於乘數中每個0,僅需要將前面的累加的部分積向右移動一位
[2]
。
- 中文名
- Booth算法
- 外文名
- Booth
- 提出者
- Booth夫婦
- 適用領域
- 信息科學
- 應用學科
- 數學
- 方 法
- 操作計算補碼數據的乘積
Booth算法簡介
利用移位和加法,可以實現二進制無符號數的乘法,在無符號數乘法的基礎上,加上適當的符號處理,很容易得到帶符號數的原碼乘法器。但是,在計算機中,帶符號數都以補碼錶示,若採用原碼乘法器進行帶符號數的乘法運算,則首先要將乘數和被乘數轉換成原碼,相乘後再將負的乘積轉換成補碼,致使運算過程比較複雜。
Booth算法原理
布斯算法將乘數看作從最低位開始的一串二進制數字。從最低位算起,只要這串數字為“0“,就不執行任何操作;當這串數字遇到第一個“1”時執行一次減法,即減被乘數與該位權值的乘積,而對於其後的“1”不執行任何操作;當這串數字再變為“0”時,則遇到第一個“0”時執行一次加法,即加被乘數與該位權值的乘積,而對其後的“0”則不執行任何操作。如此一直進行到最高位
[1]
。
舉例來説,假設被乘數是5,乘數是7,即進行二進制數00000101與00000111相乘。該算法將7看作為三個“1”後面跟有五個“0”的一串數字。對於第一個”1”,該算法將減去5×20,對於第二和第三個“1”,則不執行任何操作;當遇到第一個“0”時,加5×23,得到最後結果是35。用算式表示為
[1]
:
Booth算法計算步驟
Yn | Yn+1 | 操作 |
0 | 0 | +0,右移一位 |
0 | 1 | +[x]補,右移一位 |
1 | 0 | +[-x]補,右移一位 |
1 | 1 | +0,右移一位 |
具體步驟如下:
Booth算法用途
Booth算法採用相加和相減的操作,計算補碼數據的乘積。Booth算法對乘數從低位開始判斷,根據兩個數據位的情況決定進行加法、減法還是僅僅移位操作。判斷的兩個數據位為當前位及其右邊的位(初始時需要增加一個輔助位0),移位操作是向右移動
[7]
。
Booth算法特點
2位Booth編碼可以將部分積的個數減少1/2,3位或4位的Booth編碼可以使部分積的個數減少得更多。但是,在3位或3位以上的Booth編碼中,雖然部分積的個數減少了,但是部分積產生電路變複雜了,部分積的產生需要的時間增加了,在一定程度上抵消了部分積的減少帶來的好處。因此,在實際的乘法器設計中,常被使用的仍然是2位Booth編碼
[2]
。
- 參考資料
-
- 1. 朱競夫編著.高等學校教材 坦克火控系統:兵器工業出版社,1992年08月第1版:第187頁
- 2. 許邦建,唐濤,張坤赤,陳強編著,DSP處理器算法概論,國防工業出版社,2012.02,第46頁~第48頁
- 3. 萬國春,蘇立峯,羅勝欽,陳怡編著,系統芯片(SOC)設計方法與實踐,同濟大學出版社,2016.12,第214頁
- 4. 胡越明主編;全國高等駕馭自學考試指導委員會編,計算機組成原理 (附:計算機組成原理自學考試大綱),經濟科學出版社,2000.03,第32頁
- 5. 包健,馮建文,章復嘉編著,計算機組成原理,浙江科學技術出版社,2004年8月,第79頁
- 6. 陳琳琳,趙正平,紀平,吳婷編著,計算機組成原理答疑解惑與典型題解,北京郵電大學出版社,2015.01,第44頁
- 7. 方輝雲,何苗,陳琛主編;金大衞,李雙星,宋潔副主編.計算機組成原理:華中科技大學出版社,2016.02:第82頁