补码->原码

本文解释了补码如何转化为原码的过程,特别关注于负数的情况,通过数学推导证明了取反加1等于原码减1的方法,解答了作者长久以来关于这个概念的疑惑。
摘要由CSDN通过智能技术生成

小编最近终于弄懂了一个长期以来的疑问:补码怎么到原码的内部逻辑

原码

我们都知道数据在内存中的存储有不同的类型,大概分为三种:
1.整形
2.浮点型
3.构造类型
这里就不再过多解释具体的类型。
而对于整形在内存中都是存二进制的补码。

补码

补码是怎么来的呢?
如果是正数,那它的原反补码是相同的;如果是负数,把它二进制第一位作为符号位,然后符号位不变,其他位按位取反,最后+1,就是负数的补码。

而这些都不是我想表达的重点只是来帮你们回忆回忆。接下来我想说我们通过补码是如何来得到原码?
1.先-1,再按位取反;
2.先按位取反,再+1.
第一个方法不难理解,关键是第二个,我记得我的老师当时也没做解释,让我们记住就好了,这也成为我一直的一个一疑点.今天我来做出解释。
假设一个负数的原码为a,反码为a,取反就用黄颜色表示
a+a=0b(1……1)=2^n-1=F
这里解释一下,一个负数的原码与反码相加就成了2^n-1,令它等于F。
我们这里需要证明的是a+1= (a-1)
通过上面的式子,我们不难得到:
a+1=F-a+1
而当我们令a=a-1时,我们得到:
(a-1) =F-(a-1)
两个式子右边完全相等,所以命题成立。

弄清一个知识点真棒,大家继续加油!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值