kogad blog

進化計算とかプログラミングとか,勉強したことを書きます.

すべてのビット列を出力する

ある長さのすべてのビット列のパターンが欲しい場面があったんだけど,意外とハマってしまった. 正直とても簡単だけど,怪電波を受信してしまって訳わからんことをしてしまったので,自戒の念を込めて記事にする.

長さ L のすべてのビット列が欲しければ,1 ~ L の整数をビット列に変換して端から L ビットだけとってくればよい.

Julia であれば,

L = 4
for i = 0:2^L-1
    str = bitstring(i)
    println(str[length(str)-L+1:length(str)])
end

とすれば,

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

のような感じになる.

bitstring()の返り値の型は String なので,整数の配列とかで欲しければ適当に parse() してやればよい.

もっと簡単な方法があるような気もする.


追記 (2021/02/07) digits(n; base, pad) がの方が簡単でよいです.