8 回答
TA贡献3593条经验 获得超0个赞
TA贡献1条经验 获得超0个赞
int 是占4个字节, 32个0`1 的表示能力就是 2^32 (4,294,967,296) 个整数.
可以想象一条数据, 我们把整数 0, 1, 2, ... 一直到2^32 - 1 (4,294,967,295) 都表示出来了.
但是int 是带正负号的, 我们生活中需要用到负200 负1000 的概率要远大于 30亿, 35亿的情况,
说白了,我们不能只考虑正数, 所以把这2^32 左移动了一半, 这样我们的数轴就变成了
-2147483648 ~~ 2147483647
这样我们就得到了int类型的最大值了最小值.
类似的, 如果有一天int 变成6个节字或8个字节, 我们也能快速推导出新的上界下界了.
备注: 我觉得以下2个数字大概有个印象,
2^32 = 4,294,967,296 约43亿
2^31 = 4,294,967,296 / 2 = 2147483648 约21.5亿
TA贡献3条经验 获得超4个赞
int max =Integer.MAX_VALUE;//最大值
int min =Integer.MIN_VALUE;//最小值
再用打印输出语句输出结果即可!
TA贡献35条经验 获得超44个赞
同学您好,
int类型是8个字节,32位,最大值用二进制表示就是, 0111...(总共31个1)。为什么第一位是0? 二进制里,最高位(第一位)表示符号
0表示正,1表示负。
所以将二进制01111...(31个1)转换成十进制,就是:2^0*1 + 2^1*1 + 2^2*1...+2^n*1就变成了2的n次方求和, 这里的n就是30,因为第一位是0,即2^31 * 0
2的n次方求和(n=30),由等比数列可知, 2^0 + 2^1 + 2^2...+2^n=2^(n+1)-1 = 2^31-1
同理最小值的二进制表示就是,1000...(总共31个0),(负数二进制转十进制,是用补码(反码加1)转的。)
1000(31个0)的补码还是本身。 所以最小值就是, 2^0*0 + 2^1*0 + 2^2*0...+ 2^31*1=2^31= -2^31
添加回答
举报