这个和java中的数值表示有关系,带符号的数都有最大值,到了最大值之后就变成负数了,可以看看java中负数的表示方法。原理讲了,下面给个例子:
int i = Integer.MAX_VALUE;
int j = i+1;
System.out.println(j<i);
会出现这种情况
解释:
计算机中所有数据都是二进制来存储,数字也不例外
以int为例子,一个int占用4个字节,一个字节二进制为8位
那么一个int的二进制位32位,其中高位为符号位,1代表负0代表正
如下图:
从二进制层面来看,int最大值+1 就会变为最小值
由于int只占用32位,所以不管怎么变化,超过32位的将被舍弃
所以 -1+1的二进制本应该是 100000000000000000000000000000000,由于1在第33位
所以舍弃后就是32个0,也就是0
转自:https://zhidao.baidu.com/question/242222335194118124.html