使用 XOR 和加法取反 int

Negate int using XOR and addition

我必须编写一个将 int 值转换为相同的负 int 值的方法。例如,如果用户输入 5,该方法应该返回 -5。

整个故事是: 该方法有一个传输参数,它可以是正整数或负整数。是不是正int,我们要把它改成负int。如果它是负整数,什么也不做。 也很难检查给定的整数是正数还是负数。

规定:

如何仅使用 XOR 和 + 将值更改为其负值?

注意: 唯一允许的操作是:

! ^ && || +

没有*,没有-,没有~

编辑: CherryDT 和 MikeC 的两个解决方案运行良好。有什么想法可以用相同的规定检查它是负参数还是正参数?我认为这将是简单的部分。后来发现不是。

开始了

public class Test {

     public static void main(String []args){
        int x = 245;
        System.out.println(x);
        x = (~x^x)*x;
        System.out.println(x);
     }
}

(x ^ -1) + 1

说明:基本上和~x + 1一样。 -1 设置了所有位,因此在异或时反转所有位,就像 NOT 一样。因为,反过来,反转总是给你 -x - 1,你需要做的就是反转并加 1。