quitar - Función matemática Java para convertir positivo int a negativo y negativo a positivo?
numero negativos en java (10)
¿Hay una función de Java para convertir un int positivo a uno negativo y un int negativo a uno positivo?
Estoy buscando una función reverse
para realizar esta conversión:
-5 -> 5
5 -> -5
¿Qué pasa con x *= -1;
? ¿Realmente quieres una función de biblioteca para esto?
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;)
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.
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
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.
Puedes usar Matemáticas:
int x = Math.abs(-5);
Sí, como ya señaló Jeffrey Bosboom (Lo siento, Jeffrey, no había notado tu comentario cuando respondí), existe una función Math.negateExact : Math.negateExact .
y
No, probablemente no deberías estar usándolo. No, a menos que necesite una referencia de método .
Solo use el operador unario negativo :
int x = 5;
...
x = -x; // Here''s the mystery library function - the single character "-"
Java tiene dos operators menos:
- la versión aritmética familiar (por ejemplo,
0 - x
) y - la operación unaria minus (usada aquí), que niega el operando (único)
Esto compila y funciona como se esperaba.
original * = -1;
Línea de código simple, original es cualquier int que desee que sea.
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.