Java 为什么我可以在整数的最大值上加一?
为什么我可以在最大值int的基础上加1? 此代码的输出为-2147483648。这不是只有当biggerValue的类型是long时才可能的吗?我想不会吧Java 为什么我可以在整数的最大值上加一?,java,integer,Java,Integer,为什么我可以在最大值int的基础上加1? 此代码的输出为-2147483648。这不是只有当biggerValue的类型是long时才可能的吗?我想不会吧 public class Test { public static void main (String[] args) { AddOne addOne = new AddOne(); System.out.println("The value of bigger is " + addOne.plusOne());
public class Test {
public static void main (String[] args) {
AddOne addOne = new AddOne();
System.out.println("The value of bigger is " + addOne.plusOne());
}
}
class AddOne {
public long plusOne() {
int value = Integer.MAX_VALUE;
int biggerValue = value + 1;
return biggerValue;
}
}
报告说:
如果整数加法溢出,则结果为低阶
以足够大的数值表示的数学和的位数
二补格式。如果发生溢出,则
结果与两者的数学和的符号不同
操作数值
你应该用位来计算这个数字。一个位被累积,发生溢出。由于整数是有符号的,所以一位流入用作符号的位
01111111 11111111 11111111 11111111 Base10: Integer.MAX_VALUE
+00000000 00000000 00000000 00000001 Base10: 1
____________________________________
=10000000 00000000 00000000 00000000 Base10: -2147483648
biggerValue
的类型不会改变计算value+1
的方式。1up用于逻辑表达式。