补码

问题一:如何将一个补码快速的转换成真值?
答:由于公式比较难打出来,所以这里举例说明。

【0001】补 = -0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 0 + 0 + 0 + 1 = 1
【1011】补 = -1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = -8 + 0 + 2 +1 = -5


问题二:N位的补码所能表示的最大的正数和最小的负数是多少?
答:根据问题一给出的公式,可以求出最大值的向量为【01...1】和最小值的向量为【10...0】。所以一个N位的补码能表示数的范围是【-2^(N-1) ,2^(N-1)-1 】

例:一个8位长的补码能表示的的最大值和最小值?
最大值:当首位为0,后面全为1的时候最大,为【2^7 - 1】
最小值:当首位为1,后面的全为0的时候最小,为【-2^7】

结论一:原码表示的小数只能无限接近1和-1,补码可以达到-1,但是无法达到1。
结论二:0在补码中只有一种表示方式,但是在原码中有+0和-0两种表示方式。
结论三:补码和原码之间的来回转换都可以用反码再加1来进行计算,转换的时候的进位不会改变符号位。只要在做算数运算的时候才可能会改变符号位。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值