假設(shè)我在0和之間有十進制數(shù)2^L。這些十進制數(shù)中的每一個都可以表示為 length 的二進制數(shù)L。我現(xiàn)在對一個函數(shù)感興趣,該函數(shù)采用單個十進制數(shù),然后計算所有L十進制數(shù),其二進制表示僅在一個位置不同。我對這個問題的最快速解決方案感興趣。例子:L=3--> Numbers between 0 and 7F(2) = (0,3,6)since 2= 010 -> 0=000, 3=011, 6=110希望你有一個想法,并提前致謝:)
2 回答

瀟湘沐
TA貢獻1816條經(jīng)驗 獲得超6個贊
您可以使用位移來做到這一點:
def neighbors(n, bitLength):
return map(lambda b: n ^ (1 << b), range(bitLength))
>>> print(list(neighbors(2, 3)))
[3, 0, 6]
它們是經(jīng)典計算機可以完成的最快的數(shù)學(xué)運算,對于 2 的冪,它們是完美的。
添加回答
舉報
0/150
提交
取消