【Python】2進数と10進数を相互変換する方法を解説

2進数と10進数の相互変換を行いたいけど、やり方がわかない人もいるでしょう。

この記事では、プログラミング初心者にもわかりやすく、Pythonを使った2進数と10進数の相互変換方法を解説します。

目次から探す

2進数から10進数への変換

2進数から10進数への変換は、プログラミングでよく使われる技術です。

Pythonでは、主に2つの方法で2進数から10進数への変換ができます。

それぞれの方法を詳しく見ていきましょう。

int()関数を使った方法

Pythonの組み込み関数である int() 関数を使って、2進数から10進数への変換が簡単にできます。

int() 関数は、第1引数に文字列、第2引数に基数(省略可能)を取ります。

基数を指定することで、その基数の数値表現を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進数への変換ができます。

どちらの方法を使っても問題ありませんが、 int() 関数を使った方法の方が簡単で効率的です。

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()関数を使用しましょう。

1 2

この記事のページ一覧
  1. 現在のページ
目次から探す