【发布时间】:2013-06-27 20:10:53
【问题描述】:
我是编程新手。我正在学习 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
【问题讨论】:
-
是的,它确实加减
2。理解输出有什么问题吗? -
那么这本书是错的。它说如果我们从最小值中减去 1,它必须是 -2147483469,但它变成了 2147483646 因为二进制的东西。所以书中“减1”这句话是错误的
-
我不明白这个问题,也不明白中间
min和max变量的意义。 -
马特。问题很清楚。如果我不是初学者,我可以更好地回答你,所以重点是理解书中所写的原始数据类型,哈哈。我没有写那个例子
-
安德鲁,我之前看过发帖规则,真的很抱歉。这是因为我在学习新事物时不耐烦。不会再发生了