Booth算法(有符号数的乘法)

Posted 若为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Booth算法(有符号数的乘法)相关的知识,希望对你有一定的参考价值。

求 M3M2M1M0×Q3Q2Q1Q:  0110×0101  (有符号数用补码表示,最高位表示正负)

1、添加辅助位:A=0000     Q-1=0

2、控制逻辑判断:

  ①Q0Q-1=01 时:A=A+M 然后 A、Q、Q-1算术右移 (两步)

  ②Q0Q-1=10 时:A=A-M  然后 A、Q、Q-1算术右移 (两步)

     补码加减:(A-M)补码=A补码+(-M)补码

  ③Q0Q-1=00或11 时:A、Q、Q-1算术右移 (一步)

     补码右移:空位填1

3、Q有几位就做几次右移运算。(如:01000×011,做3次右移结束)

4、结果即为AQ(0001 1110,即 6×5=30)。

 

运算过程和结果
  A Q Q-1 M
初值 0000 0101 0 0110
①  A-M 1010 0101 0 0110
A,Q,Q-1右移 1101 0010 1 0110
②  A+M 0011 0010 1 0110
A,Q,Q-1右移 0001 1001 0 0110
③  A-M 1011 1001 0 0110
A,Q,Q-1右移 1101 1100 1 0110
④  A+M 0011 1100 1 0110
A,Q,Q-1右移 0001 1110 0 0110

以上是关于Booth算法(有符号数的乘法)的主要内容,如果未能解决你的问题,请参考以下文章

verilog中有符号数的运算

汇编语言无符号数与有符号数转换

jchdl - GSL实例 - MulC2(有符号数的乘法)

无符号数和有符号数的转化

booth算法 booth算法简介

有符号数的加减法 和无符号数的加减法,和,系统是如何识别有符号数和无符号数的