查找 ~A XOR B 的最有效算法是什么?(注意~是求补函数,是将每个1位反转为0,将每个0反转为1位,XOR是异或函数)
例如,〜4 XOR 6 =〜010 = 101 = 5 和〜6 XOR 9 =〜1111 = 0
这是考虑到存储整数所需的位数的答案:
def xnor(a, b):
length = max(a.bit_length(), b.bit_length())
return (~a ^ b) & ((1 << length) - 1)
Run Code Online (Sandbox Code Playgroud)
我想不出还有什么比这更好的情况了~a ^ b
。对于负数来说几乎可以肯定是没有意义的。