A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么int的取值范围是-2^31~2^31-1  ;而不是-2^32~2^32?

19 个回复

倒序浏览
因为int是四个字节  最大就是0111 1111 1111 1111 1111 1111 1111 1111
回复 使用道具 举报
曾经也被这个问题纠结,记住就行了
回复 使用道具 举报
自己计算下最高位就懂了,0111 1111 1111 1111
回复 使用道具 举报
cat73 黑马帝 2016-7-21 10:29:34
报纸
int 总共有 32 个 bit,因此可以表示 2^32 种不同的状态。
2^32 = 2^31 + 2^31。

-1 -2 -3 是 3 个数字,同理可证:-1 ~ -2^31 是 2 ^ 31 个数字。
OK,一半数字就这么没了。
0 1 2 是 3 个数字,注意 最大的数字是 2,但这是 3 个数字。
所以 0 ~ 2^31 是 2^31 + 1 个数字。
2^31 + 2^31 + 1 = 2^32 + 1,这超出了 int 的 32 个 bit 可以表达的范围。

所以说,0 以上的部分实际上是 0 ~ 2^31 - 1,总共是 2^31 个数字。
2^31 + 2^31 = 2^32 个数字,刚刚好够 int 的 32 个 bit 存开的。
回复 使用道具 举报
cat73 黑马帝 2016-7-21 10:42:58
地板
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解
我们都知道 int 最高位为符号位,那么还剩下 31 位,容量就是 2 ^ 31,根据符号位不同,一半跟正数,一半给负数。
那么正数很简单,0 就是所有位都是 0,1 是最低位为 1,其他为 0,以此类推。

那么负数呢?难道我们还需要一个 -0 么?我们已经有正数的 0 了,不需要再有一个负数的 0。
所以说,负数的 0 用来代表 -1 好了,负数的 1 用来代表 -2。
因此负数比正数需要表示的东西少了一个 0,自然就比正数多表示一个数。
回复 使用道具 举报 1 0
因为还有个0啊,算在了里面嘛
回复 使用道具 举报
cat73 发表于 2016-7-21 10:42
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解:
我们都知道 int 最 ...

这个解释看懂了,很好很形象
回复 使用道具 举报
cat73 发表于 2016-7-21 10:42
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解:
我们都知道 int 最 ...

这个解释看懂了,很好很形象
回复 使用道具 举报
逆风搁浅 发表于 2016-7-21 00:08
因为int是四个字节  最大就是0111 1111 1111 1111 1111 1111 1111 1111

为什么又2^31 -1 呢? 先记住吧,学完这个后面看看数据结构里面会不会提到
回复 使用道具 举报
最高位是符号位
回复 使用道具 举报
cat73 发表于 2016-7-21 10:42
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解:
我们都知道 int 最 ...

{:3_47:} Thank you
回复 使用道具 举报
因为还有个0
回复 使用道具 举报
因为int是四个字节  最大就是0111 1111 1111 1111 1111 1111 1111 1111
回复 使用道具 举报
最高位是符号位?
回复 使用道具 举报
int类型的数据占4个字节,1个字节站8bit,所以int类型数据用2进制表示就是
01111111    11111111    11111111    11111111  这个就是最大值2^31-1
10000000    00000000    00000000    00000000  这个就是最小值-2^31
回复 使用道具 举报
最高位是正负号
回复 使用道具 举报
cat73 发表于 2016-7-21 10:42
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解:
我们都知道 int 最 ...

6666666666666666666
回复 使用道具 举报
因为有一个0  他都是0最高位对他没影响。所以就是这样咯
回复 使用道具 举报
因为机器识别的二进制数,最高位是符号位,int四个字节,01111111 11111111 11111111 11111111这就是int二进制最大值(首位0表示正数),这个数就是2^31-1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马