整数以二进制“补码”格式存储
①正数的补码=正数的原码
+5 0000 0101 原码=补码
②负数的补码=负数的原码按位求反(符号位保持1不变),末位加1
-5 1000 0101 原码
1111 1010 补码
1111 1011 补码 其值为:-1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0=-5
在int型为32位的硬件环境中,int正数的补码范围是0000 0001~ 0111 1111,即1~2^7-1
int负数的补码范围是1000 0000~ 1111 1111即-2^7~-1,
因此int型整数的取值范围是-2^7~2^7-1。
关于计算机中为什么要使用补码来存储整数,可以参考这篇文章【原创】计算机为什么要用补码? - 知乎 (zhihu.com),但目前还不是很理解。