Zmień znak za pomocą operatorów bitowych

Jak zmienić znak int używając operatorów bitowych? Oczywiście możemy użyćx*=-1 lubx/=-1. Czy jest najszybszy sposób na zrobienie tego?

Zrobiłem mały test jak poniżej. Tylko dla ciekawości ...

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

Wyjście jest prawie podobne do:

2200211
835772
1255797
4651923

questionAnswers(3)

yourAnswerToTheQuestion