bin関数とは?
Python
のbin
関数は、整数を2進数に変換するための組み込み関数です。2進数とは、0と1の2つの数字だけを使って数値を表す方法で、コンピュータの内部ではデータをビットとして扱います。bin
関数を使うと、整数を2進数表現に変換して、その結果を文字列として取得できます。
2進数は通常の整数表現(10進数)とは異なる形式で表示され、Python
ではその結果が”0b”という接頭辞で始まるのが特徴です。たとえば、整数10
を2進数に変換すると0b1010
となります。
bin関数の基本的な使い方
基本的な構文
bin(整数)
bin
関数は、引数として整数を受け取り、その整数を2進数表現に変換して文字列を返します。
例 - 正の整数を2進数に変換する
print(bin(10)) # 出力: 0b1010
print(bin(255)) # 出力: 0b11111111
この例では、10
を2進数に変換すると0b1010
、255
を変換すると0b11111111
という結果が返されます。
例 - 負の整数を2進数に変換する
print(bin(-10)) # 出力: -0b1010
負の数もbin
関数で変換できます。この場合、0b
の前にマイナス記号が付いて、-0b1010
のような形式で返されます。Python
では、負の数の2進数は符号付きの2進数表現になります。
2進数の基本的な概念
2進数とは?
2進数は、0と1だけで数値を表す基数2の数値システムです。これに対して、私たちが日常的に使用する10進数は基数10のシステムです。
- 10進数: 数字は0から9まで(基数10)
- 2進数: 数字は0と1だけ(基数2)
2進数の変換
通常の10進数から2進数への変換は、以下のように進めます。
例: 10進数10
を2進数に変換する場合
- 10を2で割り、その商を次の割り算に使う。
- 割り算の余りを記録する。
- 商が0になるまで繰り返す。
10 ÷ 2 = 5 余り 0
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1
上から余りを並べると、1010
(2進数)となります。
bin関数の応用
2進数から整数に戻す
bin
関数で取得した2進数文字列を元の整数に戻すには、Python
のint
関数を使って逆変換が可能です。int
関数では、2つ目の引数に基数を指定します。
binary_str = bin(10) # 0b1010
decimal_value = int(binary_str, 2)
print(decimal_value) # 出力: 10
この例では、bin(10)
で得られた0b1010
をint
関数を使って10進数に戻しています。
2進数リストの作成
複数の整数を2進数に変換してリストとして保持する場合にもbin
を使えます。リスト内包表記を使うと、簡単に処理できます。
numbers = [1, 2, 3, 4, 5]
binary_list = [bin(x) for x in numbers]
print(binary_list) # 出力: ['0b1', '0b10', '0b11', '0b100', '0b101']
この例では、[1, 2, 3, 4, 5]
という整数リストを、それぞれの2進数表現に変換したリストを作成しています。
パディング付きの2進数表現
標準のbin
関数は、結果を接頭辞0b
付きで返しますが、2進数の桁数を揃えたい場合は、Python
の文字列フォーマット機能を使って指定できます。
number = 5
binary_str = format(number, '08b') # 8桁の2進数にフォーマット
print(binary_str) # 出力: 00000101
このようにformat
関数を使うと、桁数を揃えた2進数表現が作れます。'08b'
の部分は、8桁にゼロパディングして2進数(b
)に変換する指定です。
2進数でのビット演算
Python
では、2進数のビット演算も簡単に行えます。ビットごとのAND、OR、XOR、NOTの演算が可能です。
a = 0b1101 # 13
b = 0b1011 # 11
# ビットごとのAND
print(bin(a & b)) # 出力: 0b1001
# ビットごとのOR
print(bin(a | b)) # 出力: 0b1111
# ビットごとのXOR
print(bin(a ^ b)) # 出力: 0b0110
# ビットごとのNOT
print(bin(~a)) # 出力: -0b1110(負の数)
このように、bin
関数を使うとビット演算結果を2進数で確認でき、複雑なビット操作の結果を簡単に表示できます。
bin関数の注意点
結果は文字列
bin
関数の返り値は文字列形式であることに注意しましょう。例えば、計算に使いたい場合には、再度int
関数を使って整数に戻す必要があります。
binary_str = bin(10) # '0b1010'
# このままでは文字列なので、計算には使えない
負の数の扱い
bin
関数は負の整数に対しても正しく動作しますが、結果にはマイナス
記号が付加されるだけで、2の補数形式などの内部表現とは異なることがあります。
print(bin(-10)) # 出力: -0b1010
まとめ
bin
関数は、Python
で整数を簡単に2進数に変換するための強力なツールです。2進数表現は、特にビット演算や低レベルなデータ処理において役立ちます。また、format
関数を使って桁数を揃えたり、int
関数で元の整数に戻したりすることで、柔軟に2進数を扱うことができます。
Python
で数値データを扱う際、特にビット単位の処理が必要な場面では、bin
関数を使って2進数の変換と表示を試してみてください。