计算机可以识别0和1, 1个字节等于8位(1Byte=8bit)。
无符号整型1表示为00000001,2表示为00000010,3表示为00000011, ..., 最大11111111。 无符号的数就是按这个原理来储存的,所以告诉你一个无符号的整数的二进制码,你就可以知道这个数是多少,而且知道在计算机中,这个数本身就是以这个二进制码来储存的。无符号的整数根本就没有原码、反码和补码。
只有有符号的整数才有原码、反码和补码的!其他的类型一概没有。
不能用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝对值的方法。
因为2^7*2还是256个数, 但是 0000 0000 和 1000 0000 是一个数 这样就能表示 255个数。
负整数在计算机中是以补码形式储存的,但是由于正整数的补码和反码一样,所以可以统称有符号整数按补码存储。
32bit系统中 0x8000 0000 ~ 0xFFFF FFFF 正好对应着 -2^31 ~ -1, 同时可以发现所有这些负数的最高位都是1。
所以在有符号整型数对应的储存码的最高位 可以指示出来 数的正负,但是剩余31 对应的二进制值并不是这个负数的绝对值。
其实一个负数补码对应的值是 -2^31 + (除了最高位,剩下位的值)
比如 0x8000 0000 对应的数 是 -2^31 + 0 = -2^31; 而0xFFFF FFFF 对应的数是 -2^31 + (-2^31 - 1) = -1