10進数の2進数の近傍

ハイウェイジョン

との間に10進数がある0とし2^Lます。これらの10進数のそれぞれは、長さの2進数として表すことができますLここで、1つの10進数を受け取り、2進数L表現が1つの位置でのみ異なるすべての10進数を計算する関数に興味があります私はこの問題の最も速い解決策に興味があります。例:

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

関連記事