为了账号安全,请及时绑定邮箱和手机立即绑定

java中int类型所能表示的最大值和最小值是怎么来的?

/ 猿问

java中int类型所能表示的最大值和最小值是怎么来的?

疯狂的小佳 2017-06-20 13:14:40
查看完整描述

8 回答

?
牛津小学徒


你可以了解一下计算机二进制部分的内容,原码,反码,补码等,看完基本就懂了

查看完整回答
5 反对 回复 2017-07-30
?
宝慕林8457364

int max =Integer.MAX_VALUE;//最大值
int min =Integer.MIN_VALUE;//最小值
再用打印输出语句输出结果即可!

查看完整回答
3 反对 回复 2018-01-24
?
troyoqczaq
你好a
查看完整回答
反对 回复 2020-02-17
?
奈何做贼

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亿

查看完整回答
反对 回复 2020-02-15
?
翔仔

同学您好,

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

查看完整回答
6 反对 回复 2017-06-20
?
Dusdii

......

查看完整回答
反对 回复 2019-05-13
?
qq_Kero_1

。。。

 

查看完整回答
反对 回复 2017-06-21
?
amorlova

通过占用多少字节,再通过二进制补码的方式计算而来

查看完整回答
反对 回复 2017-06-20

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信