十进制数的二进制邻居

约翰公路

假设我在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

希望你有个主意并提前致谢:)

伍迪1193

您可以使用位移来做到这一点:

def neighbors(n, bitLength):
    return map(lambda b: n ^ (1 << b), range(bitLength))

>>> print(list(neighbors(2, 3)))
[3, 0, 6]

它们是用经典计算机可以完成的最快的数学运算,并且对于2的幂次方,它们是完美的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章