我是一个编程新手。我正在学习一本Java面向对象编程书,并同时在计算机上进行教程和示例练习。 该书中提到整数的最大值和最小值为:
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
所以没问题。但是,如果我们把最大值加1并从最小值减去1;
class test {
public static void main(String[] args) {
int min = Integer.MIN_VALUE -1;
int max = Integer.MAX_VALUE +1;
int a = min - 1;
int b = max + 1;
System.out.println("min - 1 =" + a);
System.out.println("max - 1 =" + b);
}
}
因此,我们发现:
min - 1 = 2147483646
max + 1 = -2147483647
它说这个结果是因为内存中的二进制过程受到32位的限制。我不理解的是,在这段代码中,它难道不是分别从最大值和最小值中加减2吗?
int min = Integer.MIN_VALUE -1; // subtracted 1 here
int max = Integer.MAX_VALUE +1; // added 1 here
int a = min - 1; // subtracted 1 here
int b = max + 1; // added 1 here