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