定点运算——乘法

定点运算——乘法

分析笔算乘法

  1. 对于定点数的乘法,分为两部分
  • 将乘数和被乘数的符号位提出,单独进行异或运算
  • 将将乘数和被乘数的数值部分取绝对值们,进行移位加法运算
  1. 通过下述对笔算的分析,得到对于二进制的乘法数值部分而言,只有两种运算过程
    • 乘数对应的位数为0,不加被乘数
    • 乘数对应的位数为1,那就进行相应的移位之后,加上对应的被乘数
  2. 得到最终对应的结果
    在这里插入图片描述
为了减少运算的过程,对其进行如下化简
  1. 在原来的乘法中,乘数的各个数位不变,然后由乘数的位数逐次往前推进,然后将被乘数进行相应的移位运算,再与结果进行累加。
    在这里插入图片描述
  2. 改进,为了不移动被乘数,我们移动乘数,每一次只要根据乘数的最后一位进行判定就行了。同时移动每一次的部分积,做到位数与位数相关。
    看不懂,就看图
  3. 图示

在这里插入图片描述

  • 最低位是1,将被乘数加到部分积中。

在这里插入图片描述

  • 将乘数中已经判定过的1,移除,丢弃已经没用。乘数整体右移,这样乘数最左边就多出来一个数位。除此之外,将部分积整体右移,左边拿0补,右边移出的数不能丢保存到乘数寄存器的第一位。在这里插入图片描述
  • 以乘数新的最后一位进行判定,然后与部分积进行相加

在这里插入图片描述

  • 再次进行移位操作,将乘数的最后一位右移删除,空出的最高位由部分积的移出的最低位补充

在这里插入图片描述
在这里插入图片描述

  • 乘数的最后一位是0,不用再加上被乘数,所以结果直接为部分寄存器中的值

在这里插入图片描述
在这里插入图片描述

  • 注意:这里虽然加上的是0,但是在实际操作中,是没有这一步的,但是控制移位是必修要进行的

在这里插入图片描述
在这里插入图片描述

  • 将乘数最后一位进行判定,加上被乘数
    在这里插入图片描述在这里插入图片描述
  • 进行移位运算,最终结果是部分积寄存器中的高位和乘数寄存器中的低位组合,就是最终的结果
总结
  1. 通过分析发现,乘数有n位,就会进行n次判定和移位运算,判定的截至条件是乘数寄存器中的所有位数都被移出,最终里面全是结果的低位部分
  2. 遇到0可以不想加,但是一定要进行移位运算,即最终是以移位的次数来决定最后的运算流程
  3. 被乘数仅仅是与部分积的高位相加,低位全部被转移到加数寄存器
  4. 上述流程总共用到了三个寄存器和一个加法器。加法器是核心,用来提供被加数和部分积的加法运算。两个寄存器具有移位运算功能,分别用来保存加数和部分积;一个是普通寄存器,用来保存被加数。

硬件配置

在这里插入图片描述

  1. A为移位寄存器,用来保存部分积
  2. Q为移位寄存器,用来保存乘数和部分积的低位部分
  3. X为通用寄存器,用来保存被加数
  4. C为计数器,用来控制整个乘法的运行步骤和循环次数
原码乘法运算
运算规则

在这里插入图片描述

递推公式

在这里插入图片描述

举例

在这里插入图片描述
在这里插入图片描述

特点
  1. 绝对值运算
  2. 用移位的次数判定乘法是否结束
  3. 逻辑移位,注意在乘数运算中是逻辑运算,全体移位,因为已经移位完了。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值