将正整数转换为负数,将负数转换为正数?

是否有一个 Java 函数将正整数转换为负整数,将负整数转换为正整数?

我正在寻找一个 reverse函数来执行这个转换:

-5  ->  5
5  -> -5
240706 次浏览

那么 x *= -1;呢? 您真的需要一个库函数吗?

只要使用 一元负运算符一元负运算符:

int x = 5;
...
x = -x; // Here's the mystery library function - the single character "-"

Java 有 减去 操作员:

  • 熟悉的 算术版本(例如 0 - x) ,以及
  • 一元减法运算一元减法运算(在这里使用) ,它否定(单个)操作数

这将按预期进行编译和工作。

x = -x;

这可能是我在任何地方见过的最琐碎的问题。

为什么你会把这个微不足道的函数叫做’反向()’是另一个谜。

另一种方法(2的补语) :

public int reverse(int x){
x~=x;
x++;
return x;
}

It does a one's complement first (by complementing all the bits) and then adds 1 to x. This method does the job as well.

注意: 这个方法是用 Java 编写的,与其他许多语言类似

在这里施展死灵法术。
显然,x *= -1;太简单了。

相反,我们可以使用一个简单的二进制补语:

number = ~(number - 1) ;

像这样:

import java.io.*;


/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int iPositive = 15;
int iNegative = ( ~(iPositive - 1) ) ; // Use extra brackets when using as C preprocessor directive ! ! !...
System.out.println(iNegative);


iPositive =  ~(iNegative - 1)  ;
System.out.println(iPositive);


iNegative = 0;
iPositive = ~(iNegative - 1);
System.out.println(iPositive);




}
}

这样我们就可以确保普通的程序员不知道发生了什么;)

这样的函数不存在,也不可能写入。

The problem is the edge case Integer.MIN_VALUE (-2,147,483,648 = 0x80000000) apply each of the three methods above and you get the same value out. This is due to the representation of integers and the maximum possible integer Integer.MAX_VALUE (-2,147,483,647 = 0x7fffffff) which is one less what -Integer.MIN_VALUE should be.

是的,正如 Jeffrey Bosboom已经指出的(对不起,杰弗里,我回答时没有注意到你的评论) ,有这样一个功能: 数学,否定,正确

还有

不,你也许不该用它,除非你需要 方法参考

您可以使用负运算符或 Math.abs。这些运算符适用于除 Integer.MIN _ VALUE 以外的所有负整数! 如果选择0-MIN _ VALUE,那么答案仍然是 MIN _ VALUE。

原始 * = -1;

简单的代码行,原始的是任何你想要的 int。

你可以使用数学:

int x = Math.abs(-5);

The easiest thing to do is 0- the value

例如,如果 int i = 5;

0-我给你 -5

如果我是 -6;

0-我给你6

For converting a negative number to positive. Simply use Math.abs() inbuilt function.

int n = -10;
n = Math.abs(n);

一切顺利!