整数のビットを反復処理するPython的な方法 質問する

整数のビットを反復処理するPython的な方法 質問する

a=109またはをバイナリで表してみましょう1101101。この数値のビットを反復処理するにはどうすればよいでしょうか。例:[64, 32, 8, 4, 1]

ベストアンサー1

間に挟まれた 0 をすべて反復処理せずに、バイナリ表現から 1 だけを取り出すためのトリックがあります。

def bits(n):
    while n:
        b = n & (~n+1)
        yield b
        n ^= b


>>> for b in bits(109):
    print(b)


1
4
8
32
64

おすすめ記事