重複の可能性:
組み込みの bin 関数を使用せずに整数をバイナリに変換する
10 進数を 2 進数リストに変換する方法を教えてください。
たとえば、8 を [1,0,0,0] に変更するにはどうすればよいですか?
重複の可能性:
組み込みの bin 関数を使用せずに整数をバイナリに変換する
10 進数を 2 進数リストに変換する方法を教えてください。
たとえば、8 を [1,0,0,0] に変更するにはどうすればよいですか?
おそらく組み込みbin
関数を使用できます。
bin(8) #'0b1000'
リストを取得するには:
[int(x) for x in bin(8)[2:]]
おそらくもっと良い方法があるように思えますが...
これを試して:
>>> list('{0:0b}'.format(8))
['1', '0', '0', '0']
編集 -- おっと、整数が欲しかった:
>>> [int(x) for x in list('{0:0b}'.format(8))]
[1, 0, 0, 0]
別の編集 -
mgilson のバージョンは少し高速です。
$ python -m timeit "[int(x) for x in list('{0:0b}'.format(8))]"
100000 loops, best of 3: 5.37 usec per loop
$ python -m timeit "[int(x) for x in bin(8)[2:]]"
100000 loops, best of 3: 4.26 usec per loop
あなたの最初の試みの精神で:
binary = []
while num != 0:
bit = num % 2
binary.insert(0, bit)
num = num / 2