【发布时间】:2020-05-07 07:28:09
【问题描述】:
假设我们正在对整数 1 和 4 执行 XOR 运算以找到汉明距离。为什么 XOR 和其他按位运算的运行时间低于常数?是不是因为 int 的大小在 Python 等语言中是固定的,所以无论整数输入如何,操作都会花费恒定时间?
[编辑] 假设我们正在使用 Brian Kernighan 的算法计算两个整数的汉明距离,如下所示。
def hammingDistance(x: int, y: int):
xor = x ^ y
distance = 0
while xor:
distance += 1
# remove the rightmost bit of '1'
xor = xor & (xor - 1)
return distance
【问题讨论】:
-
可能是因为这个操作是用硬件执行的,就像每个数学和逻辑运算一样
-
如果不先确定输入大小,您将无法回答任何运行时问题。
-
0 ≤ x, y
标签: bit-manipulation bitwise-xor