int型数值范围
在我们的计算机当中数据都是以01二进制形式存储,而整型变量int一般占的是4个字节,一个字节为8位,也就是32位。所以一个整型变量在计算机当中其实可以用32位的二进制来表示。比如1这个整型变量,用二进制可以表示为0000 0000 0000 0000 0000 0000 0000 0001 这就是正数1的原码(每8位为一个字节所以正好占4个字节,int是带符号的整型变量,最高位为符号位,也就是左数第一位) ,正整数用原码表示,负整数用补码表示。所以正整数在内存中的32位最大可以表示为0111 1111 1111 1111 1111 1111 1111 1111 也就是2^31-1=2147483647 因为是正整数,所以第一位符号位是0,从1开始所以要减去全0这种情况。
int类型的取值范围是-2^31 ~2^31-1,也就是-2147483648 ~ 2147483647 。在计算机二进制中符号为最高位占一位,负数用补码表示,正零负零都表示为0000 0000 0000 0000 0000 0000 0000 0000,因为二进制正数的补码为原码本身,负数零原码为1000 0000 0000 0000 0000 0000 0000 0000,反码为1111 1111 1111 1111 1111 1111 1111 1111,反码求法,最高符号位不变,其余部分取反。负数补码用原码取反码,最低位加1来求,最后都是0000 0000 0000 0000 0000 0000 0000 0000。
还有一种便于记忆的技巧,假设计算机是2位机,可以存储二进制00、10、01,转化为十进制最大数为3,也就是2^2 -1,以此类推32位机,int型存储范围中最大数值为2^32-1。
欢迎大家批评指正,探讨交流。