【发布时间】:2015-11-14 06:28:06
【问题描述】:
这是我遇到的一个面试问题,我知道如何通过反复异或数字来获得暴力解决方案,但我不知道如何更有效地做到这一点。
我在careercup上看到了这个解决方案:
typedef unsigned long long UINT64;
UINT64 getXOROne2N(UINT64 n) {
switch (n % 4) {
case 0: return n;
case 1: return 1;
case 2: return n + 1;
case 3: return 0;
}
return 0;
}
但是即使有那个家伙的解释我也不完全理解这里的逻辑,有人可以解释一下如何做到这一点吗?
【问题讨论】:
-
这里面有什么不明白的地方?
-
给了here的正确解释。
-
困难的部分似乎是高位,
n显示所有其他结果提供线索。
标签: algorithm bit-manipulation xor bitwise-xor