假设我在0
和之间有十进制数字2^L
。这些十进制数字中的每一个都可以表示为长度的二进制数L
。我现在对一个函数有一个兴趣,该函数采用一个十进制数,然后计算L
二进制表示形式仅在一个位置不同的所有十进制数。我对这个问题的最快解决方案感兴趣。例:
L=3--> Numbers between 0 and 7 F(2) = (0,3,6) since 2= 010 -> 0=000, 3=011, 6=110
希望你有个主意并提前致谢:)
您可以使用位移来做到这一点:
def neighbors(n, bitLength):
return map(lambda b: n ^ (1 << b), range(bitLength))
>>> print(list(neighbors(2, 3)))
[3, 0, 6]
它们是用经典计算机可以完成的最快的数学运算,并且对于2的幂次方,它们是完美的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句