还不会?一文说清计算机的补码,移位与乘法运算

1. 有符号整数

负数的表示

符号及值表示法

最高位为符号位,0为正数,1为负数;

8e91fd4c72be47758663627705f7f60c.png

存在两个零:

+0:00000000;-0:100000000

二进制补码运算

减去一个数等于加上这个数的补数;

求补数方法:

0c94a303dab24d568994293272b25d16.jpg

 

各位取反加一

01100101补数:10011010+1=10011011

1d0e1680f261404a864673b7a13251e4.png

n位全是1与一个n位二进制数差结果为取反,1-0=0;1-1=1;

所以补码运算全取反再加一;

补码最高位为符号位;

2d6a9abb88fe445f85f53d96afc646f7.png

移位运算

算术左移

最低位补0,最高位复制到进位标志中;

算术右移

最高位补符号位,最低位复制到进位标志中;

63fdcc22ef014276a68c5be0cb2aa70e.png

计算机计算乘法过程

先将计数器值置为n(二进制位数),然后2n的部分积清零(存储结果),检查乘数

最右位1还是0,将其乘被乘数后,之后加到部分积最低n位(左面为低位,因为要不断右移,一开始先乘的在最右面),计数器的n-1,部分积右移一位,计算下一个部分积的和;直到计数器的n为0;

快速乘法

与负数相乘

6e4c7f20b4584088b3387949562ef723.pngf56630be060f4c43b90d09a9b311891a.png

布斯乘法

根据乘数相邻两位的值确定操作

1.开始乘数当前位为最低位时,乘数当前位下一位为0;

2.当前位为1,下一位为0,部分积减去被乘数;

3.当前位为0,下一位为1,部分积加上被乘数;

4.被乘数当前位与下一位相同,不进行任何运算,部分积右移一位;

5.被乘数与部分积相加,进位舍去;

6.每次运算后,部分积右移一位

9ca7a922b5a94dd5be3f3b959e268f42.png

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值