java中是否存在i+1<i?
存在!
- 首先我们知道int的取值范围是:
- -2147483648~2147483647,最高位为符号位
- 2147483647的二进制为:01111111 11111111 11111111 11111111
- 那么2147483647+1,计算机的底层逻辑是二进制相加:
-
- 01111111 11111111 11111111 11111111
- 00000000 00000000 00000000 00000001
- 10000000 00000000 00000000 00000000
- =-2147483648
代码验证
这里是拿int类型32位做例子,可以看出,当最高位为1时,它既是符号位,也是数值位
进一步推理是否存在11111111 11111111 11111111 11111111这样的数?
答案:不存在,可以看出,当为最小负数时,会先判断是否达到最小负数,然后再次相加
即:2147483647+5=
(2147483647+1)+4=
-2147483648+4=
-2147483644