- int占4个字节,每个字节8位,其数据范围为-2^31——2^31-1,即-2147483648——2147483647
- 正数的原码=反码=补码;
- 负数的反码=在其原码的基础上, 符号位(最左边第一位,0表示正数,1表示负数)不变,其余各个位取反;
- 负数的补码=在反码的基础上+1;
int数据共有4*8=32位,其中最左边第一位是符号位,剩下31位表示数字。
当符号位是0时,也就是正数时,共有2^31=2147483648个数字,其中包含有+0,所以最大的正数应为2^(31)-1=2147483647。
0000 0000 | 0000 0000 | 0000 0000 | 0000 0000 ------------ 表示 +0
1000 0000 | 0000 0000 | 0000 0000 | 0000 0000 ------------ 表示 -0
这里有一个前提条件我们得清楚:在实际存储的过程中,所有数值都是按照补码来存储的,这对正数来说没有影响,但是负数就不一样了。
负数的补码=在反码的基础上+1;
负数能表示的数字仍然只有2^31=2147483648个,其中还包含-0,为了不浪费-0这一位就用它表示-2^31=-2147483648。