题目如下:给定两个整数x1和x2,找到另一个整数x3,它与x1和x2都不同,不能使用if关键字。
我的解决方案基于对整数进行位运算,并且根据异或操作的特点,如果两个位不相等,则返回1。
这个解决方案是否有效?你能找到更好的解决方案吗?当然,运行时间和内存消耗应尽可能优秀。
注意:三元操作和比较(即-!=,==)也不被允许。
谢谢。
我的解决方案基于对整数进行位运算,并且根据异或操作的特点,如果两个位不相等,则返回1。
这个解决方案是否有效?你能找到更好的解决方案吗?当然,运行时间和内存消耗应尽可能优秀。
注意:三元操作和比较(即-!=,==)也不被允许。
谢谢。
int foo(int x1,int x2)
{
// xor
int x3 = x1 ^ x2;
// another xor
x3 = x3 ^ x2;
// not
x3 = ~x3;
return x3;
}
~(x ^ y ^ y)
,实际上等价于~x
。因此当y = ~x
时,这个代码就无法正常工作。 - Ry-z = x^y; z=z^y
的意思是z=x
,那么z==~x
可能是~x == y
吗? - Jean-Baptiste Yunèsif
:a= c*x+(1-c)*y
,当c==1
时得到 x,当c==0
时得到 y。或许可以以某种方式运用它? - Jean-Baptiste Yunès(~x1 & 2) | (~x2 & 1)
。 - Ry-