原码一位乘、二位乘

原码一位乘:

异号相乘,符号为负;
同号相乘,符号为正。

运算法则:
在这里插入图片描述

求p的绝对值
①被乘数和乘数均取绝对值参加运算,符号位单独考虑
②部分积的长度同被乘数,初值为0
从乘数的最低位yn开始判断,若yn=1,则部分积加上被乘数x的绝对值,然后右移一位,若yn=0,则部分积加上0,然后右移一位。

例:x=0.1101,y=-0.1011,试利用计算机实际演算标准步骤的原码一位乘来计算[x*y]原。
解析:|x|=0.1101,|y|=0.1011
在这里插入图片描述
在这里插入图片描述

由上述可归纳:

  1. 乘法运算可用移位和加法来实现,两个n位数相乘,共需要进行n次加法运算和n次移位操作。
  2. 上述运算规则同样适用于整数原码,为了区别,将“.”改为“,”

原码二位乘

原码二位乘的引入是为了提高乘法运算的速度。

原码一位乘与原码二位乘异同点:

相同点运算过程中,符号位运算与数值位运算分开进行
不同点原码一位乘每次都采用乘数的一位来决定新的部分积的形成;原码二位乘采用乘数的两位来决定新的部分积的形成

原码二位乘的状态:

乘数新的部分积
00新部分积=原部分积右移2位
01新部分积=(原部分积+被乘数)右移2位
10新部分积=(原部分积+被乘数*2)右移2位
11新部分积=(原部分积+被乘数*3)右移2位‘

Cj触发器00-11只能表示0-3倍,所以要引入标志位Cj。通过乘数“11”表示的3倍,再加上Cj位置“1”来实现加1倍,可以实现4倍被乘数(加几倍被乘数都是加在部分积上的)
但是,4-1倍被乘数|x|中(|x|是绝对值,因为符号位分开运算),有-|x|,所以要采用“[-|x|]补”补码来实现,参与原码两位乘运算的操作数都是绝对值的补码(绝对值是正数,所以原码=补码。因为实际上是加3倍的|x|,所以结果为正,补码结果=原码结果)。

在这里插入图片描述
例:已知x=-0.1101,y=0.0110,用原码二位乘法[x*y]原?
|x|=0.1101, 2|x|=1.1010,|y|=0.0110
在这里插入图片描述
在这里插入图片描述
由上述归纳:

  • 当乘数的位数为偶数时,需要做n/2次移位,最多做(n/2)+1次加法;
  • 当乘法的位数为奇数时,需要做(n/2)+1次移位,最多做(n/2)+1次加法。

明显比原码一位乘的移位次数和加法次数要少,所以速度更快。

《计算机组成原理》——唐朔飞

此次分享就到这里,欢迎大家指导指正~ 我是爱吃肉的小白yyyloki,如果你觉得不错的话点个赞👍吧!或者你可以关注,持续更新计组的内容(ps:也许期末用的上)。我们下次见~886

在这里插入图片描述

  • 16
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值