原码一位乘法(2020-03-27)

原码一位乘法

 我直接上例子吧,说实话我看书上的定义过程,我个憨憨不懂。🤮🤮🤮
 eg:已知X=0.110,Y=-0.101,用原码一位乘法求X*Y。
 首先符号位单独做异或运算,数据部分是绝对值运算🙃     方法一:求出X.Y的原码
        [X]原=0.110           [Y]原=1.101(这里的原码第一个数字都是符号位哦🙃)
       而部分积一开始都是初始为0的,但都是双符号位,而我自己理解是就是原码前面加个0。
  部分积                         乘数                     右移的数字
   00.000                       0.101

我们来从右向左看乘数,由此判断要加的数是|X|的绝对值。
乘数的第一个数字是1,是1就是加|X|,是0就加部分积的初始值,也就是00.00(就是0但是你要根据你部分积的位数来判断0的表现方式)
部分积 乘数 右移的数字
00.000 0.101
+00.110
—————
00.110→要右移这个新的数
→00.011 0(移掉了右边0)
来判断乘数的第二个数字是0,则将右移的新数加0
00.011
+00.000
——————
00.011→右移这个新的数
→00.001 10(移掉了右边1)
来判断乘数的第三个数字是1,则右移的数加|X|
00.001
+00.110
——————
00.111→右移这个数
→00.011 110(移掉了右边1)
算到哪里截止呢,就是从右向左遇到小数点就可以停了。
而最后的结果呢😊 还记得我们最开始说好的符号位要单独做异或运算,X是正数为0,Y是负数为1,做异或就是1。
最终右移的新数00.011还记得我们一开始说了是双符号位,最后我们结果就单符号就好了,就是0.011然后异或的1和小数点前的的数做加法,就是1.011但是你忘记了我们的右移的数了嘛,把它添在后面就行了。
所以,XY=1.011110
(右移的数我怕你们不清楚,就是你依次移掉的数按从右向左写就好了😁)
方法二:不看符号位,X=0.110 Y=0.101
部分积一开始还是0,根据乘数右向左第一个判断要加的数是|X|还是0。
部分积 乘数
00.000 0.101(第一个是1)
+00.110
——————
00.110→右移这个数
→00.0110 (这一次右移的数不单独拿出来)
+00.000 0.101(第二个是0)
——————
00.0110→右移这个数
→00.00110 0.101(第三个是1)
+00.110
———————
00.11110→右移这个数
→00.011110 0.101(第四个是小数点不用加啦)
右移的新数是00.011110
还和前面一样,结果是单符号位就可以了,即为0.011110,但是不能忘了一开始数的符号位哦~
正负异或为1,加上就是1.011110
所以X
Y=1.011110

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里Y=-0.101
我太菜鸟了🐤,排版不太会,所以出来的可能有点错位,所以你们可以看图😁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值