小编最近终于弄懂了一个长期以来的疑问:补码怎么到原码的内部逻辑
原码
我们都知道数据在内存中的存储有不同的类型,大概分为三种:
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)
两个式子右边完全相等,所以命题成立。
弄清一个知识点真棒,大家继续加油!