2進数表示の桁を調べる
整数$ nを2進数表示したときの桁を調べる
変換して取り出す
code:py
n = 11
n_bit = format(n, 'b')
for i, b in enumerate(n_bit::-1):
print(f'{b} * 2^{i}')
# 1 * 2^0
# 1 * 2^1
# 0 * 2^2
# 1 * 2^3
1桁ずつ削る
code:py
n = 11
i = 0
while n:
b = n & 1
print(f'{b} * 2^{i}')
n >>= 1
i += 1
# 1 * 2^0
# 1 * 2^1
# 0 * 2^2
# 1 * 2^3
$ 11 = 2^3 + 2^1 + 2^0
n & 1で$ 2^0の係数を取り出す
またはn % 2
$ =1
n >>= 1でビットを右にシフトする
またはn //= 2
$ = 5 = 2^2 + 2^0
$ 2^iの係数が次の$ 2^{i-1}の係数になる