2進数と10進数の相互変換を行いたいけど、やり方がわかない人もいるでしょう。
この記事では、プログラミング初心者にもわかりやすく、Pythonを使った2進数と10進数の相互変換方法を解説します。
2進数から10進数への変換
2進数から10進数への変換は、プログラミングでよく使われる技術です。
Pythonでは、主に2つの方法で2進数から10進数への変換ができます。
それぞれの方法を詳しく見ていきましょう。
int()関数
を使った方法
Pythonの組み込み関数である int()
関数を使って、2進数から10進数への変換が簡単にできます。
基数を指定することで、その基数の数値表現を10進数に変換できます。
例えば、2進数の文字列'1101'
を10進数に変換するには、以下のように int()
関数を使います。
binary_str = '1101'
decimal_num = int(binary_str, 2) # 2進数の基数は2
print(decimal_num)
13
この例では、2進数の文字列'1101'
を int()
関数に渡し、基数として2
を指定しています。
これにより、10進数の13
に変換されます。
ビット演算を使った方法
ビット演算を使って、2進数から10進数への変換を行うこともできます。
この方法では、2進数の各桁を左から右に走査し、その桁の値が1であれば、その桁の重み(2のべき乗)を加算していきます。
例えば、2進数の文字列'1101'
を10進数に変換するには、以下のようにビット演算を使います。
binary_str = '1101'
decimal_num = 0
for i, bit in enumerate(reversed(binary_str)):
if bit == '1':
decimal_num += 2 ** i
print(decimal_num)
13
この例では、 reversed()
関数を使って2進数の文字列を逆順にし、 enumerate()
関数を使って各桁のインデックスと値を取得しています。
その後、値が'1'
であれば、その桁の重み(2のべき乗)を加算していきます。
最終的に、10進数の13
に変換されます。
以上の2つの方法を使って、2進数から10進数への変換ができます。
10進数から2進数への変換
10進数から2進数への変換は、プログラミングでよく使われる処理です。
Pythonでは、主に2つの方法で10進数を2進数に変換できます。
それぞれの方法を詳しく見ていきましょう。
bin()関数
を使った方法
Pythonで10進数を2進数に変換する最も簡単な方法は、 bin()
関数を使うことです。
bin()
関数は、引数に与えられた整数を2進数の文字列に変換して返します。
以下に、 bin()
関数を使って10進数を2進数に変換する例を示します。
# 10進数の数値
decimal_number = 10
# 2進数に変換
binary_number = bin(decimal_number)
# 結果を表示
print("10進数:", decimal_number)
print("2進数:", binary_number)
10進数: 10
2進数: 0b1010
この例では、10進数の10
を2進数に変換しています。
bin()
関数は、2進数の文字列を0b
というプレフィックス付きで返します。
このプレフィックスは、2進数を表すためのものですが、必要に応じて取り除くこともできます。
# 2進数の文字列からプレフィックスを取り除く
binary_number = binary_number[2:]
# 結果を表示
print("2進数(プレフィックスなし):", binary_number)
2進数(プレフィックスなし): 1010
ビット演算を使った方法
もう一つの方法として、ビット演算を使って10進数を2進数に変換することができます。
この方法では、右シフト演算子(>>
)とビットAND演算子(&
)を使って、10進数の各ビットを取り出し、2進数の文字列を構築します。
以下に、ビット演算を使って10進数を2進数に変換する例を示します。
# 10進数の数値
decimal_number = 10
# 2進数に変換
binary_number = ""
for i in range(decimal_number.bit_length()):
binary_number = str((decimal_number >> i) & 1) + binary_number
# 結果を表示
print("10進数:", decimal_number)
print("2進数:", binary_number)
10進数: 10
2進数: 1010
この例では、 decimal_number.bit_length()
で10進数のビット長を取得し、その回数だけ右シフト演算とビットAND演算を繰り返しています。
これにより、10進数の各ビットを取り出し、2進数の文字列を構築しています。
どちらの方法でも、10進数を2進数に変換することができます。
bin()
関数を使った方法は簡単ですが、ビット演算を使った方法はより低レベルな操作を行っているため、ビット演算に慣れることが目的の場合には適しています。
可読性はお世辞にも高いとはいえないので、特別な理由がないときは素直にbin()
関数を使用しましょう。