社区
Java SE
帖子详情
java int 的最大值+1为什么是-2147483648
蛋蛋の忧伤
2012-10-26 02:17:53
为什么呢?一直搞不明白
...全文
7981
25
打赏
收藏
java int 的最大值+1为什么是-2147483648
为什么呢?一直搞不明白
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
从此安心潜水被占用
2012-10-29
打赏
举报
回复
[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)
java
中
Int
的
最大值
和最小值
2019独角兽企业重金招聘Python工程师标准>>> ...
Java
中
int
类型的
最大值
及原因
java
中
int
类型的
最大值
是 2^31-1, 即 2147483647 最小值是 -2^31, 即 -
2147483648
可通过如下代码查看: System.out.pr
int
ln(
Int
eger.MAX_VALUE); System.out.pr
int
ln(
Int
eger.MIN_VALUE); 结果: 2147483647 -
2147483648
在
java
中
int
类型占 4 字节即 32 位,在 2^32 中取出一半用于表示负数,所以最小值是-(2^32/2), 即-2^31; 并在
Java
Int
eger.MAX_VALUE循环错误问题
今天看到一道题,是关于
int
最大值
的循环问题,如下图 public static final
int
e1 =
Int
eger.MAX_VALUE; public static final
int
e2 = e1 - 2; public static void main(String[] args) {
int
count = 0; Sy...
java
中存在i+1
java
中
int
是32,范围是-
2147483648
--2147483647,所以是存在i+1 看下面代码
java
整数相乘_
Java
中两个
int
相乘的结果是怎么算的?
与你预期结果不符的原因,其实是2147483647为
int
类型的
最大值
。
int
最高只能等于这个数字,那么超过的部分的处理方式是什么呢?我用JDK11的JShell临时做了一个验证,
Int
eger.MAX__VALUE = 2147483647;当
Int
eger.MAX_VALUE + 1的时候,可以发现,这个时候数值是 -
2147483648
,即 -
Int
eger.MAX_VALUE - 1 。i...
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章