Есть ли функция Java для преобразования положительного int в отрицательный и отрицательный int в положительный?
Я ищу функцию reverse
для выполнения этого преобразования:
-5 -> 5
5 -> -5
Есть ли функция Java для преобразования положительного int в отрицательный и отрицательный int в положительный?
Я ищу функцию reverse
для выполнения этого преобразования:
-5 -> 5
5 -> -5
Как насчет x *= -1;
? Вы действительно хотите функцию библиотеки для этого?
x = -x;
Это, наверное, самый тривиальный вопрос, который я когда-либо видел.
... и почему вы назвали бы эту тривиальную функцию "reverse()", это еще одна загадка.
Просто используйте унарный минус:
int x = 5;
...
x = -x; // Here the mystery library function - the single character "-"
В Java есть два минус операторы:
0 - x
) иЭто компилируется и работает как ожидалось.
Другой метод (2 дополнения):
public int reverse(int x){
x~=x;
x++;
return x;
}
Сначала он выполняет одно дополнение (дополняя все биты), а затем добавляет 1 в x. Этот метод также выполняет эту работу.
Примечание. Этот метод написан на Java и будет похож на многие другие языки.
Нет такой функции, которая существует или может быть записана.
Проблема - это краевой регистр Integer.MIN_VALUE (-2,147,483,648 = 0x80000000) применяет каждый из трех вышеперечисленных методов, и вы получаете то же значение. Это связано с представлением целых чисел и максимально возможного целочисленного Integer.MAX_VALUE (-2,147,483,647 = 0x7fffffff), что на один раз меньше, чем -Integer.MIN_VALUE должно быть.
original * = -1;
Простая строка кода, оригинал - это любой объект, который вы хотите, чтобы он был.
Некромирование здесь.
Очевидно, что 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);
}
}
Вы можете использовать оператор минус или Math.abs. Они работают для всех отрицательных целых чисел EXCEPT для Integer.MIN_VALUE! Если вы сделаете 0 - MIN_VALUE, ответ будет еще MIN_VALUE.
Вы можете использовать Math:
int x = Math.abs(-5);
Да, как уже отмечалось Jeffrey Bosboom (Извините, Джеффри, я не заметил вашего комментария, когда я ответил), есть такая функция: Math.negateExact.
и
Нет, вы, вероятно, не должны его использовать. Если вам не нужна ссылка метода.