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

 

posted @ 2021-02-04 16:03  ChenXingEn  阅读(453)  评论(0编辑  收藏  举报