Изменить знак с помощью побитовых операторов

Как изменить знак int с помощью побитовых операторов? Очевидно, мы можем использоватьx*=-1 или жеx/=-1, Есть ли самый быстрый способ сделать это?

Я сделал небольшой тест, как показано ниже. Просто для любопытства ...

public class ChangeSign {
    public static void main(String[] args) {
        int x = 198347;
        int LOOP = 1000000;
        int y;
        long start = System.nanoTime();
        for (int i = 0; i < LOOP; i++) {
            y = (~x) + 1;
        }
        long mid1 = System.nanoTime();
        for (int i = 0; i < LOOP; i++) {
            y = -x;
        }
        long mid2 = System.nanoTime();
        for (int i = 0; i < LOOP; i++) {
            y = x * -1;
        }
        long mid3 = System.nanoTime();
        for (int i = 0; i < LOOP; i++) {
            y = x / -1;
        }
        long end = System.nanoTime();
        System.out.println(mid1 - start);
        System.out.println(mid2 - mid1);
        System.out.println(mid3 - mid2);
        System.out.println(end - mid3);
    }
}

Выход почти похож на:

2200211
835772
1255797
4651923

Ответы на вопрос(3)

Ваш ответ на вопрос