Подтвердить что ты не робот

Математическая функция Java для преобразования положительного int в отрицательный и отрицательный в положительный?

Есть ли функция Java для преобразования положительного int в отрицательный и отрицательный int в положительный?

Я ищу функцию reverse для выполнения этого преобразования:

-5  ->  5
 5  -> -5
4b9b3361

Ответ 1

Как насчет x *= -1;? Вы действительно хотите функцию библиотеки для этого?

Ответ 2

x = -x;

Это, наверное, самый тривиальный вопрос, который я когда-либо видел.

... и почему вы назвали бы эту тривиальную функцию "reverse()", это еще одна загадка.

Ответ 3

Просто используйте унарный минус:

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

В Java есть два минус операторы:

  • знакомая арифметическая версия (например, 0 - x) и
  • унарная минусовая операция (используется здесь), которая сводит на нет (единственный) операнд

Это компилируется и работает как ожидалось.

Ответ 4

Другой метод (2 дополнения):

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

Сначала он выполняет одно дополнение (дополняя все биты), а затем добавляет 1 в x. Этот метод также выполняет эту работу.

Примечание. Этот метод написан на Java и будет похож на многие другие языки.

Ответ 5

Нет такой функции, которая существует или может быть записана.

Проблема - это краевой регистр Integer.MIN_VALUE (-2,147,483,648 = 0x80000000) применяет каждый из трех вышеперечисленных методов, и вы получаете то же значение. Это связано с представлением целых чисел и максимально возможного целочисленного Integer.MAX_VALUE (-2,147,483,647 = 0x7fffffff), что на один раз меньше, чем -Integer.MIN_VALUE должно быть.

Ответ 6

original * = -1;

Простая строка кода, оригинал - это любой объект, который вы хотите, чтобы он был.

Ответ 7

Некромирование здесь.

Очевидно, что 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);


    }
}

Ответ 8

Вы можете использовать оператор минус или Math.abs. Они работают для всех отрицательных целых чисел EXCEPT для Integer.MIN_VALUE! Если вы сделаете 0 - MIN_VALUE, ответ будет еще MIN_VALUE.

Ответ 9

Вы можете использовать Math:

int x = Math.abs(-5);

Ответ 10

Да, как уже отмечалось Jeffrey Bosboom (Извините, Джеффри, я не заметил вашего комментария, когда я ответил), есть такая функция: Math.negateExact.

и

Нет, вы, вероятно, не должны его использовать. Если вам не нужна ссылка метода.