Pregunta Función matemática Java para convertir positivo int a negativo y negativo a positivo?


¿Hay una función de Java para convertir un int positivo a uno negativo y un int negativo a uno positivo?

Estoy buscando reverse función para realizar esta conversión:

-5  ->  5
 5  -> -5

31
2017-10-23 23:06


origen


Respuestas:


Qué pasa x *= -1; ? ¿Realmente quieres una función de biblioteca para esto?


173
2017-10-23 23:07



x = -x;

Esta es probablemente la pregunta más trivial que he visto en mi vida.

... y por qué llamarías a esta función trivial 'reverse ()' es otro misterio.


55
2017-10-23 23:09



Solo usa el operador unario negativo:

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

Java tiene dos menos operadores:

  • lo familiar aritmética versión (ej. 0 - x), y
  • el operación unaria minus (usado aquí), que niega el operando (único)

Esto compila y funciona como se esperaba.


35
2017-10-23 23:08



Otro método (complemento de 2):

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

Hace primero un complemento (complementando todos los bits) y luego agrega 1 a x. Este método también hace el trabajo.

Nota: Este método está escrito en Java y será similar a muchos otros idiomas


8
2018-03-02 00:16



original * = -1;

Línea de código simple, original es cualquier int que desee que sea.


5
2017-12-25 17:17



No existe tal función o es posible escribir.

El problema es el caso de borde Integer.MIN_VALUE (-2,147,483,648 = 0x80000000) aplica cada uno de los tres métodos anteriores y obtienes el mismo valor. Esto se debe a la representación de enteros y al número entero máximo posible Integer.MAX_VALUE (-2,147,483,647 = 0x7fffffff) que es uno menos de lo que debería ser -Integer.MIN_VALUE.


4
2017-08-08 12:51



Nigromancia aquí.
Obviamente, x *= -1; es demasiado simple

En cambio, podríamos usar un complemento binario trivial:

number = ~(number - 1) ;

Me gusta esto:

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);


    }
}

De esa forma podemos asegurarnos de que los programadores mediocres no entiendan lo que está pasando;)


2
2017-08-07 21:30



Puede usar el operador menos o Math.abs. ¡Funcionan para todos los enteros negativos, EXCEPTO para Integer.MIN_VALUE! Si haces 0 - MIN_VALUE, la respuesta sigue siendo MIN_VALUE.


1
2017-12-25 11:44



Puedes usar Matemáticas:

int x = Math.abs(-5);

1
2017-11-10 18:22



Sí, como ya fue notado por Jeffrey Bosboom (Perdón, Jeffrey, no había notado tu comentario cuando respondí), existe tal función: Math.negateExact.

y

No, probablemente no deberías estar usándolo. No, a menos que necesites un referencia de método.


-1
2018-01-08 16:25