在计算机中所有的数据都是以二进制形式存储的。但是它是怎样存储在内存中的呢?
是以补码的形式存储的。
什么是补码呢?
在弄清楚什么是补码之前先得了解“符号位”和“源码”和“反码”
什么是符号位?
int a = 10;
int b = -10;
它们对应的二进位是
a: 00000000 00000000 00000000 00001010
b: 10000000 00000000 00000000 00001010
可以看到除了第一位其它位都一样
第一位为0就是正数,第一位为1就是负数
这就是所谓的“符号位”
什么是源码?
其实a的源码就是00000000 00000000 00000000 00001010
b的源码也一样是10000000 00000000 00000000 00001010
什么是反码了?
在正数中源码和反码相同
负数中反码为源码符号位不变其它位按位取反
b的反码为11111111 11111111 11111111 11110101
正数和负数的补码不一样。
正数的源码和补码一样;
负数补码就是反码加一。
b的补码为11111111 11111111 11111111 11110110
总结:
正数的源、反、补相同
负数的源码等于补码取反加一,补码等于源码取反加一