2.3 二进制乘法运算(定点原码一位乘)

2.3.1 原码一位乘

步骤:

        ①对给定的x*y,其中x为被乘数,y为乘数;

        ②计算过程中取双符号位(避免加法时产生溢出),初始时部分积为0,将乘数的数值部分的绝对值写到乘数部分。

        ③判断乘数的最低位:如果为1,则执行部分积=部分积+x,且右移一位;如果为0,则执行部分积=部分积+0,且右移一位

        ④移位的次数=乘数的数值位的位数。

        ⑤计算符号位,组合数值部分的值即为结果。

        原说法有点抽象,我这里总结就是,结果=符号+数值,(可以直接跳过看例子,这里个人理解)符号使用异或逻辑(也就是正正得正,负负得正,正负得负);然后数值位需要计算:y(乘数)从最后一位开始看起,为1时加x,为0则不加,相加时有小数点要对齐,注意每看完一位右移一位。

        看例子,保准你懂:

        比如有x= 0.1100,y= -0.1001

        先看符号位,一正一负结果必为负,结果加上即可。

        数值位:先把部分积设为初始值0(长度扩展到和x相同),即 00.0000 

y(0.1001)的最后一位是1,所以要加上x的绝对值

00.0000 + 00.1100 = 00.1100        右移一位,前面补0,变成:

00.01100

        y的倒数第二位是0,需要加0(相当于不用加),

所以还是00.01100 ,        注意不要忘记右移! 变成:

00.001100

        继续倒数第三位,还是0,熟悉了直接右移,变成:

00.00011(小数结尾的0可以不写,但要注意加法时小数点对齐)

        接下来处理最后一位(也就是第一位),是1,继续加x的绝对值

00.00011 + 00.1100 = 00.11011        右移一位,前面补0,变成:

00.011011

        最后加上的符号位的最终结果为:- 00.011011

        

在来个题巩固一下:

 

      

         

        

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值