我必须编写一个方法,将int值转换为相同的负int值。例如,如果用户输入5,则该方法应该返回-5。
整个故事是: 该方法具有传递参数,该参数是正int或负int。它是一个积极的int,我们应该将它改为负int。如果是负int,则什么也不做。 也很难检查给定的int是正还是负。
规则:
+
和所有布尔运算。但在这种情况下,我知道我必须使用XOR。如何仅使用XOR和+
?
注意: 唯一允许的操作是:
!
^
&&
||
+
没有*,没有 - ,没有〜
编辑: CherryDT和MikeC的两个解决方案运作良好。任何想法如何检查它是否具有相同的规则的负面或正面参数?我认为这将是一件容易的事。然后意识到它不是。
答案 0 :(得分:2)
(x ^ -1) + 1
说明:基本上,它与~x + 1
相同。 -1
设置了所有位,因此在与XOR一起时反转所有位,就像NOT一样。而且,反之亦然,反转将始终为您提供-x - 1
,您需要做的就是反转并添加1.
答案 1 :(得分:-2)
我们走了
public class Test {
public static void main(String []args){
int x = 245;
System.out.println(x);
x = (~x^x)*x;
System.out.println(x);
}
}