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