布斯乘法算法是计算机中一种利用数的2的补码形式来计算乘法的算法。该算法由安德鲁·唐纳德·布斯于1950 年发明,当时他在伦敦大学伯克贝克学院做晶体学研究。布斯曾使用过台式计算器,由于用这种计算器来做移位计算比加法快,他发明了该算法来加快计算速度。布斯算法在计算机体系结构学科中备受关注。
中文名
布斯乘法算法
外文名
Booth's multiplication algorithm发明人
安德鲁·唐纳德·布斯
发明时间
1950 年
布斯乘法算法算法描述
编辑
语音
对于 N 位乘数 Y,布斯算法检查其2的补码形式的最后一位和一个隐含的低位,命名为 y[i-1] ,初始值为 0 。对于 y[i], i = 0, 1, ..., N - 1,考察 y[i] 和 y[i - 1 ]。当这两位相同时,存放积的累加器 P 的值保持不变。当 y[i] = 0 且 y[i - 1] = 1 时,被乘数乘以 2^i 加到 P 中。当 y[i]= 1 且 y[i - 1] = 0 时,从 P 中减去被乘数乘以 2^i 的值。算法结束后, P 中的数即为乘法结果。
该算法对被乘数和积这两个数的表达方式并没有作规定。一般地,和乘数一样,可以采用2的补码方式表达。也可以采用其他计数形式,只要支持加减法就行。这个算法从乘数的最低位执行到最高位,从 i = 0 开始,接下来和 2^i 的乘法被累加器 P 的算术右移所取代。较低位可以被移出,加减法可以只在 P 的前 N 位上进行。[1]
布斯乘法算法典型实现
编辑
语音
布斯算法的实现,可以