1、机器的存储编码方式

首先要知道机器是使用补码进行存储数据的

2、什么是原码、反码和补码

什么是原码?首先我们知道int是占4个byte字节的,每个字节占8bit位,所以4*8=32得出int是占了32bit
比如2的二进制是10,而-2的二进制是11111111 11111111 11111111 11111110这里可以看到2的二进制只有两位而-2的二进制呢却有32位这里-2的二进制才是真的原码而10并不是原码其实10前面还有32个0因为都是0所以省略了,所以2的原码是00000000 00000000 00000000 00000010即:-2等于~2=11111111 11111111 11111111 11111110


什么是反码?
从上面2和-2的二进制可以看出来,正数的反码是他本身而负数的反码是在原码的基础上除符号位以外其他取反如:
00000000 00000000 00000000 00000010左边第一个0就是符号位了,当符号位是0时时正数而则1时负数
看符号位知道是正数所以他的反码就是他本身也就是00000000 00000000 00000000 00000010再看看
11111111 11111111 11111111 11111110
符号位是1说明了是负数,所以除了符号位不变其余取反也就是
10000000 00000000 00000000 00000001


什么是补码?
机器采用的存储方式就是补码
正数的补码还是他本身而负数的补码是他的反码+1,这里注意+1不是数字+1而是取二进制后和反码进行+法运算满2进一
即2的二进制是00000000 00000000 00000000 00000010取反后是11111111 11111111 11111111 11111101然后+1后是
11111111 11111111 11111111 11111110