或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

Pythonでビット演算(1)2進数表現 def printbin(num,width):print str(bin(num))[2:].zfill(width)

Pythonでビット演算をする必要は無いんだけど、手元にある一番手軽で高機能なCUI環境がIPythonなんで、ついついPythonでやっちまうよね。ビット演算やる前に、2進数表記をしこたま研究しないと使い物にならんぞこれ。

1〜10までを2進数表記

>>> for i in range(0,11):print bin(i)
0b0
0b1
0b10
0b11
0b100
0b101
0b110
0b111
0b1000
0b1001
0b1010

この表記も悪くないな。でもビット演算するには邪魔者がいる。先頭の0bが邪魔だ。

>>> for i in range(0,11):print str(bin(i))[2:]
0
1
10
11
100
101
110
111
1000
1001
1010

strでキャストして、2文字目以降を出力している。でも、やっぱ桁数併せたいよね・・・。

>>> for i in range(0,11):print str(bin(i))[2:].zfill(4)
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

str.zfill(桁数)で桁数併せられるっぽい。

関数化してみるか・・・。

>>> def printbin(num,width):
    print str(bin(num))[2:].zfill(width)
... 
>>> 
>>> printbin(0,4)
0000
>>> printbin(7,4)
0111

こんなもんでどうでしょうか?