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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

19 个回复

正序浏览
因为机器识别的二进制数,最高位是符号位,int四个字节,01111111 11111111 11111111 11111111这就是int二进制最大值(首位0表示正数),这个数就是2^31-1
回复 使用道具 举报
因为有一个0  他都是0最高位对他没影响。所以就是这样咯
回复 使用道具 举报
cat73 发表于 2016-7-21 10:42
或者用个好理解点的说法,实际 int 在计算机中不是这么存储的,我这么说是为了好理解:
我们都知道 int 最 ...

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

{:3_47:} Thank you
回复 使用道具 举报
最高位是符号位
回复 使用道具 举报
逆风搁浅 发表于 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 最 ...

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

这个解释看懂了,很好很形象
回复 使用道具 举报
因为还有个0啊,算在了里面嘛
回复 使用道具 举报
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
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 存开的。
回复 使用道具 举报
自己计算下最高位就懂了,0111 1111 1111 1111
回复 使用道具 举报
曾经也被这个问题纠结,记住就行了
回复 使用道具 举报
因为int是四个字节  最大就是0111 1111 1111 1111 1111 1111 1111 1111
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马