十进制数的二进制邻居

假设我在0和之间有十进制数2^L。这些十进制数中的每一个都可以表示为 length 的二进制数L。我现在对一个函数感兴趣,该函数采用单个十进制数,然后计算所有L十进制数,其二进制表示仅在一个位置不同。我对这个问题的最快速解决方案感兴趣。例子:


L=3--> Numbers between 0 and 7

F(2) = (0,3,6)

since 

2= 010 -> 0=000, 3=011, 6=110


希望你有一个想法,并提前致谢:)


阿晨1998
浏览 202回答 2
2回答

潇湘沐

您可以使用位移来做到这一点:def neighbors(n, bitLength):&nbsp; &nbsp; return map(lambda b: n ^ (1 << b), range(bitLength))>>> print(list(neighbors(2, 3)))[3, 0, 6]它们是经典计算机可以完成的最快的数学运算,对于 2 的幂,它们是完美的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python