java int 的最大值+1为什么是-2147483648

蛋蛋の忧伤 2012-10-26 02:17:53
为什么呢?一直搞不明白
...全文
7727 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 的回复:]

首先,明确,最高位是符号位。超过最大值导致符号位改变,所以是负数
[/Quote]
是的,最高位是符号位,你所说的最大值+1是因为最大值的二进制值的最高位是0,而0是一个符号位,当你的最大值+1的时候,结果就是10000000……除了最高位是1外,其他的都是0,所以就会变成负数,就像22楼说的那样,楼主可以看看源码,补码和反码这一块的知识,应该会有个比较全面的认识
LiangGzone 2012-10-27
  • 打赏
  • 举报
回复
首先,明确,最高位是符号位。超过最大值导致符号位改变,所以是负数
zhaoming262350 2012-10-27
  • 打赏
  • 举报
回复
int 的取值范围是 -2147483648 ——2147483647
2147483647 的二进制数是1111111 11111111 11111111 11111111 + 1 =
10000000 00000000 00000000 00000000 就是-2147483648
依琳小师妹 2012-10-27
  • 打赏
  • 举报
回复
反码、原码、补码
zhouhaiyangqq 2012-10-27
  • 打赏
  • 举报
回复
楼上正解,多看书有好处
yuchen208 2012-10-27
  • 打赏
  • 举报
回复
int 的4个字节
haorengoodman 2012-10-27
  • 打赏
  • 举报
回复
4楼,5楼都给答案了,楼下的都不看吗?杯具
蛋蛋の忧伤 2012-10-27
  • 打赏
  • 举报
回复
承认计算机原理这个课很枯燥无趣
fly_free_will 2012-10-26
  • 打赏
  • 举报
回复
16楼正解
print_er 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
个人理解..
int 是32位的 左边1位是符号位 其他31位是数值位
最大的正整数 符号位是0 其他位都是1
这个数+1进位之后 符号位变成1 其他位变成0 就是最大的负整数
不知道解释的对不对
[/Quote]

应该是最小的负数..
print_er 2012-10-26
  • 打赏
  • 举报
回复
个人理解..
int 是32位的 左边1位是符号位 其他31位是数值位
最大的正整数 符号位是0 其他位都是1
这个数+1进位之后 符号位变成1 其他位变成0 就是最大的负整数
不知道解释的对不对
yousun4688 2012-10-26
  • 打赏
  • 举报
回复
是不是成了补码的表示形式
kilimanjaroup 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

现在的计算机专业 都不需要学 '微机原理'了吗?
[/Quote]

现在搞Java不需要计算机专业
liangtu 2012-10-26
  • 打赏
  • 举报
回复
补码的问题,说实话,这个东西理解完就扔了。
cstur4 2012-10-26
  • 打赏
  • 举报
回复
这个是组成原理的知识,跟java没有关系。
lonekay 2012-10-26
  • 打赏
  • 举报
回复
因为最大值+1就成最小值了,最小值就是那个-值
orangleliu 2012-10-26
  • 打赏
  • 举报
回复
这也和java有关系啊。。
haorengoodman 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

现在的计算机专业 都不需要学 '微机原理'了吗?
[/Quote]
需要,但是都丢的差不多了。
想喝咖啡的貓 2012-10-26
  • 打赏
  • 举报
回复
现在的计算机专业 都不需要学 '微机原理'了吗?
sgyyz 2012-10-26
  • 打赏
  • 举报
回复
计算机都是用补码来进行运算的,组成原理里面有将的很详细啊……
加载更多回复(5)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧