> 文档中心 > java中是否存在i+1<i?

java中是否存在i+1<i?


存在!

首先我们知道int的取值范围是:
-2147483648~2147483647,最高位为符号位
2147483647的二进制为:01111111 11111111 11111111 11111111

那么2147483647+1,计算机的底层逻辑是二进制相加:

01111111  11111111  11111111   1111111100000000 00000000 00000000   0000000110000000  00000000  00000000   00000000=-2147483648

代码验证

在这里插入图片描述
这里是拿int类型32位做例子,可以看出,当最高位为1时,它既是符号位,也是数值位

进一步推理是否存在11111111 11111111 11111111 11111111这样的数?

在这里插入图片描述
答案:不存在,可以看出,当为最小负数时,会先判断是否达到最小负数,然后再次相加

即:2147483647+5=(2147483647+1)+4=-2147483648+4=-2147483644

名医百科医学知识库