布斯算法(Booth算法)是一種用於計算帶符號整數的乘法的高效算法。它利用了數的補碼形式,通過相加和相減的操作來計算乘積。布斯算法的基本步驟如下:
初始化:設定一個累加器`P`,其長度等於被乘數和乘數的位數之和加一。將被乘數的補碼值填充到`P`的前面部分,剩餘位置用零填充。
處理乘數:從乘數的最低位開始,檢查當前位`y[i]`及其右邊的位`y[i-1]`。
決定操作:
如果`y[i]`和`y[i-1]`相同,保持`P`不變。
如果`y[i] = 0`且`y[i-1] = 1`,將被乘數左移`i`位的值加到`P`上。
如果`y[i] = 1`且`y[i-1] = 0`,從`P`中減去被乘數左移`i`位的值。
移位:對`P`進行算術右移,以便處理乘數的下一位。
重複:重複步驟2到4,直到處理完乘數的所有位。
結果:最終`P`中的值即為乘法結果。
布斯算法的優點在於它能夠快速地進行乘法運算,特別是在硬體實現中。它通過使用加減法操作和移位操作來減少乘法運算的複雜度,相比於傳統的長乘法,可以顯著提高計算速度。布斯算法不僅適用於補碼表示的數,也可以用於其他支持加減法操作的計數形式。