假设我在0和之间有十进制数2^L。这些十进制数中的每一个都可以表示为 length 的二进制数L。我现在对一个函数感兴趣,该函数采用单个十进制数,然后计算所有L十进制数,其二进制表示仅在一个位置不同。我对这个问题的最快速解决方案感兴趣。例子:L=3--> Numbers between 0 and 7F(2) = (0,3,6)since 2= 010 -> 0=000, 3=011, 6=110希望你有一个想法,并提前致谢:)
2 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
您可以使用位移来做到这一点:
def neighbors(n, bitLength):
return map(lambda b: n ^ (1 << b), range(bitLength))
>>> print(list(neighbors(2, 3)))
[3, 0, 6]
它们是经典计算机可以完成的最快的数学运算,对于 2 的幂,它们是完美的。
添加回答
举报
0/150
提交
取消
