Hatena::Grouppython

Pythonの覚書

2013-03-24

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

| 22:52 | Pythonでビット演算(1)2進数表現 def printbin(num,width):print str(bin(num))[2:].zfill(width) - Pythonの覚書 を含むブックマーク はてなブックマーク - Pythonでビット演算(1)2進数表現 def printbin(num,width):print str(bin(num))[2:].zfill(width) - Pythonの覚書 Pythonでビット演算(1)2進数表現 def printbin(num,width):print str(bin(num))[2:].zfill(width) - Pythonの覚書 のブックマークコメント

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

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

ゲスト



トラックバック - http://python.g.hatena.ne.jp/oneshotlife_tom/20130324
リンク元