私はプログラミングの初心者です。私は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