这段代码:
System.out.println(Math.abs(Integer.MIN_VALUE));
返回
-2147483648
它不应该将绝对值返回为
2147483648
吗? 最佳答案
Integer.MIN_VALUE
是-2147483648
,但是32位整数可以包含的最大值是+2147483647
。尝试以32位int表示+2147483648
将有效地“翻转”到-2147483648
。这是因为,当使用带符号整数时,+2147483648
和-2147483648
的二进制补码二进制表示形式是相同的。但是,这不是问题,因为+2147483648
被认为超出范围。
有关此问题的更多信息,您可能需要查看Wikipedia article on Two's complement。
关于java - Math.abs为Integer.Min_VALUE返回错误的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5444611/