Java数学函数将正int转换为负数和负数转换为正数?

时间:2011-10-23 23:06:04

标签: java math

是否有Java函数将正int转换为负数而负数int转换为正数?

我正在寻找reverse函数来执行此转换:

-5  ->  5
 5  -> -5

13 个答案:

答案 0 :(得分:191)

x *= -1;怎么样?你真的想要一个库函数吗?

答案 1 :(得分:70)

x = -x;

这可能是我见过的最微不足道的问题。

...以及你为什么称这个琐碎的函数'reverse()'是另一个谜。

答案 2 :(得分:43)

只需使用一元减号运算符

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

Java有两个减去operators

  • 熟悉的算术版本(例如0 - x)和
  • 一元减法操作(此处使用),否定(单个)操作数

这会按预期编译并运行。

答案 3 :(得分:9)

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

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

它首先执行一个补码(通过补充所有位)然后将x加1。这种方法也可以完成这项工作。

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

答案 4 :(得分:6)

原始* = -1;

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

答案 5 :(得分:5)

不存在或无法编写此类功能。

问题是边缘情况Integer.MIN_VALUE(-2,147,483,648 = 0x80000000)应用上述三种方法中的每一种,并获得相同的值。这是由于整数的表示和最大可能的整数Integer.MAX_VALUE(-2,147,483,647 = 0x7fffffff),它比-Integer.MIN_VALUE应该少一个。

答案 6 :(得分:3)

在这里犯罪。
显然,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);


    }
}

通过这种方式,我们可以确保平庸的程序员不了解正在发生的事情;)

答案 7 :(得分:1)

是的,正如Jeffrey Bosboom已经注意到的那样(对不起杰弗里,当我回答时,我没有注意到你的评论),有这样一个功能:Math.negateExact

不,你可能不应该使用它。除非您需要method reference

答案 8 :(得分:1)

您可以使用减号运算符或Math.abs。这些适用于Integer.MIN_VALUE的所有负整数EXCEPT! 如果你做0 - MIN_VALUE,答案仍然是MIN_VALUE。

答案 9 :(得分:0)

我们可以使用以下方法反转Java数字int或double:

int x = 5;
int y = -7;

x = x - (x*2); // reverse to negative
y = y - (y*2); // reverse to positif

简单的算法来反转数字:)

答案 10 :(得分:0)

最简单的方法是0-值

例如,如果int i = 5;

0-i给你-5

如果我是-6,

0-我会给你6

答案 11 :(得分:0)

答案 12 :(得分:-1)

您可以使用数学:

int x = Math.abs(-5);