pythonでbit全探索したい
自分用のメモ。気が向いたらちゃんと書き直す。
ある10進数の数字xをn桁の2進数にしたいことがある。(主にbit全探索の時に)
その時にformatとかを使ってもよいが、書き方が覚えられなかったので、
よく使う方法をメモ。
忘れた時用のコードの解説。
bin(x >> i)
でxを2進数にしたものを一桁ずつずらしていく。
そのずらした数字の一番下の桁の数字だけが欲しいので2で割った余りを計算する。
2で割った余りを計算するためにはbitシフトしたものをintに戻す必要があるので
int(bin,2)
として2進数のものを10進数に戻している。
x_array_bin
に代入する順番を入れ替えれば、ちゃんと[0,0,0,1,1]
と出来るが、
bit全探索ではあまり関係がないのでこのままにしてある。
x = 3
n = 5
x_array_bin = [0 for _ in range(n)]
for i in range(n):
x_array_bin[i] = int(bin(x >> i),2)%2
print(x_array_bin)
#[1, 1, 0, 0, 0]