尽管我对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'

07-24 09:45
查看更多