尽管我对Java并不陌生,但前几天我观察到了这种特殊行为。我通过运行包含基本算术运算的代码来刷新基础知识。现在根据Java(以及算法的基本规则),-ve * -ve
或-ve / -ve
是+ve
编号。
但是编译此源:
int b = Integer.MIN_VALUE / -1;
System.out.println("b: " + b);
给我输出:
b:-2147483648
谁是
-ve
,谁能指出我的意思吗?我知道这一定是我无法注意到的小事情。 最佳答案
除以-1
与否定数字相同。
由于整数范围(-2147483648至2147483647)在负侧的幅度较大,因此-Integer.MIN_VALUE
等于Integer.MAX_VALUE+1
,后者溢出回到Integer.MIN_VALUE
。
System.out.println(Integer.MIN_VALUE == -Integer.MIN_VALUE); // prints 'true'