X & ( x) 概要 2 進数の値 \(x\) に対して \(x \& (-x)\) を計算すると右側から最初に 1 が立っているアドレスのみを残してほかのビットが 0 で埋まった値が返ってくる。 print(bin(11&-11), bin(11), bin(-11)) # 0b1 0b1011 -0b1011 print(bin(30&-30), bin(30), bin(-30)) # 0b10 0b11110 -0b11110 a = 5 for _ in range(5): print(a, bin(a), bin(a&-a), a&-a) a += a & -a """ 5 0b101 0b1 1 6 0b110 0b10 2 8 0b1000 0b1000 8 16 0b10000 0b10000 16 32 0b100000 0b100000 32 """ Was this page helpful? Thanks for your feedback! Thanks for your feedback!