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