Java:java中Integer.max_value+1为什么是个负数?

Integer.max_value=01111111111111111111111111111111,首位0是符号位不参与运算,所以+1后应该是0000000000000... Integer.max_value = 01111111 111111111111111111111111,首位0是符号位不参与运算,所以+1后应该是0000 0000 0000 0000 0000 0000 0000 0000 吗?(虽然我也觉得不对,但是符号位确实不应该参与运算的不是吗) 展开
 我来答
繁华的狼
2017-08-30 · TA获得超过780个赞
知道小有建树答主
回答量:347
采纳率:20%
帮助的人:90.1万
展开全部
java中int的最大数值是2147483647
这是因为整数在内存中使用的是补码的形式表示,最高位是符号位,0表示正数,1表示负数,当你+1时已经超出了java定义的最大值。详细过程如下
也就是Integer中定义的

public static final int MAX_VALUE = 0x7fffffff;
每个十六进制数4bit,因此8位16进制是4个字节,刚好是一个int整型。
F的二进制码为 1111
7的二进制码为 0111
7fffffff(十六进制) = 0 1111111111111111111111111111111(二进制)
二进制做运算+1 =1 1111111111111111111111111111111
按照规定 最高位 1表示负数 所以你的整个就变成了负数
CM娱新世界
2014-12-18 · TA获得超过308个赞
知道小有建树答主
回答量:337
采纳率:100%
帮助的人:142万
展开全部
Integer.MAX_VALUE = 01111111 11111111 11111111 11111111
+1 = 10000000 00000000 00000000 00000000
最高位是符号位为1,这个数是负数。

在Java中 Integer.MAX_VALUE+1==Integer.MIN_VALUE
负数的源码是补码取反+1,刚好是Integer.MIN_VALUE
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拉宽奇飘瘦24c3f
2017-06-22 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:47万
展开全部
Integer.max_value 二进制是
int 的本身没有负数,公有32位
定义一半表示负数,所以int最小值和最大值是挨着的

分别是0111111.....1 31 个1 最大值
和100....00 31 个0 最小值
最大值+1就直接遍成了最小值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Whikiey
2017-08-04 · TA获得超过138个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:91.6万
展开全部
有符号整型的最高位是符号位,0为非负数,1为负数,32位整型的最大值即为0x7FFFFFFF
如果此值加一,则整数部分溢出到符号位,会变为0x8000000,这样就变成了最小负整数了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
把酒醉颜欢
2017-07-11 · TA获得超过600个赞
知道小有建树答主
回答量:1042
采纳率:53%
帮助的人:445万
展开全部
Integer.max_value = 01111111 111111111111111111111111
+1 = 10000000 00000000 00000000 00000000
最高位是符号位为1,这个数是负数,负数的源码是补码取反+1,刚好等于Integer.min_value
结果当然是负数了,Integer的最小值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式