是否有一个Java函数将一个正整数转换为负一个而将负整数转换为正整数?
我正在寻找reverse执行此转换的功能:
-5 -> 5
5 -> -5
Run Code Online (Sandbox Code Playgroud)
Fai*_*Dev 202
怎么样x *= -1;?你真的想要一个库函数吗?
use*_*421 77
x = -x;
Run Code Online (Sandbox Code Playgroud)
这可能是我见过的最微不足道的问题.
...以及为什么你会称这个琐碎的函数'reverse()'是另一个谜.
Boh*_*ian 47
只需使用一元减运算符:
int x = 5;
...
x = -x; // Here's the mystery library function - the single character "-"
Run Code Online (Sandbox Code Playgroud)
Java有两个减号运算符:
0 - x)和这编译并按预期工作.
Shi*_*yal 10
另一种方法(2的补码):
public int reverse(int x){
x~=x;
x++;
return x;
}
Run Code Online (Sandbox Code Playgroud)
它首先执行一个补码(通过补充所有位),然后将x加1.这种方法也可以完成这项工作.
注意:此方法是用Java编写的,并且与许多其他语言类似
不存在此类功能或无法编写该功能。
问题在于边缘情况Integer.MIN_VALUE(-2,147,483,648 = 0x80000000)应用上述三种方法中的每一种,您都会得到相同的值。这是由于整数的表示形式以及最大可能的整数Integer.MAX_VALUE(-2,147,483,647 = 0x7fffffff),它比-Integer.MIN_VALUE少一。
小智 5
是的,正如Jeffrey Bosboom已经指出的(抱歉,Jeffrey,我在回答时没有注意到您的评论),有这样一个函数:Math.negateExact。
和
不,你可能不应该使用它。除非您需要方法引用,否则不会。