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

この記事では、Pythonを使って2進数と10進数を相互に変換する方法を学びます。

具体的には、2進数を10進数に変換する方法と、10進数を2進数に変換する方法を詳しく解説します。

また、ユーザーからの入力を受け取り、その入力を検証し、変換結果を表示する方法についても説明します。

目次から探す

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

Pythonでは、2進数を10進数に変換するためにint関数を使用します。

このセクションでは、int関数の基本的な使い方から、具体的な変換例、エラーハンドリングの方法までを詳しく解説します。

int関数を使った変換

int関数は、文字列形式の数値を指定した基数(進数)で解釈し、10進数の整数に変換するために使用されます。

2進数を10進数に変換する場合、基数として2を指定します。

int関数の基本的な使い方

int関数の基本的な構文は以下の通りです。

int(文字列, 基数)

例えば、2進数の文字列 1010 を10進数に変換する場合、基数として2を指定します。

decimal_number = int("1010", 2)
print(decimal_number)  # 出力: 10

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

具体的な例をいくつか見てみましょう。

# 2進数の文字列を10進数に変換する例
binary_str1 = "1101"
binary_str2 = "10010"
binary_str3 = "111111"
# 変換
decimal_number1 = int(binary_str1, 2)
decimal_number2 = int(binary_str2, 2)
decimal_number3 = int(binary_str3, 2)
# 結果を表示
print(f"{binary_str1} (2進数) -> {decimal_number1} (10進数)")
print(f"{binary_str2} (2進数) -> {decimal_number2} (10進数)")
print(f"{binary_str3} (2進数) -> {decimal_number3} (10進数)")

このコードを実行すると、以下のような出力が得られます。

1101 (2進数) -> 13 (10進数)
10010 (2進数) -> 18 (10進数)
111111 (2進数) -> 63 (10進数)

エラーハンドリング

2進数の文字列が無効な場合、int関数ValueErrorを発生させます。

これを防ぐために、エラーハンドリングを行うことが重要です。

無効な2進数入力の処理

無効な2進数入力が与えられた場合、適切に処理する方法を見てみましょう。

例えば、10201のような文字列は2進数として無効です。

例外処理の実装方法

例外処理を実装するためには、tryexceptブロックを使用します。

以下は、無効な2進数入力を処理する例です。

def binary_to_decimal(binary_str):
    try:
        # 2進数の文字列を10進数に変換
        decimal_number = int(binary_str, 2)
        return decimal_number
    except ValueError:
        # 無効な2進数入力が与えられた場合の処理
        return f"無効な2進数入力: {binary_str}"
# テスト
print(binary_to_decimal("1101"))    # 有効な入力
print(binary_to_decimal("10010"))   # 有効な入力
print(binary_to_decimal("10201"))   # 無効な入力

このコードを実行すると、以下のような出力が得られます。

13
18
無効な2進数入力: 10201

このようにして、無効な2進数入力が与えられた場合でも、プログラムがクラッシュすることなく適切に処理することができます。

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

Pythonでは、10進数を2進数に変換するためにbin関数を使用します。

このセクションでは、bin関数の基本的な使い方から、変換結果のフォーマット方法までを詳しく解説します。

bin関数を使った変換

bin関数は、整数を2進数の文字列に変換するための組み込み関数です。

使い方は非常にシンプルで、変換したい整数を引数として渡すだけです。

bin関数の基本的な使い方

以下に、bin関数の基本的な使い方を示します。

# 10進数の10を2進数に変換
binary_representation = bin(10)
print(binary_representation)  # 出力: 0b1010

この例では、10進数の10を2進数に変換し、その結果を表示しています。

bin関数は、変換結果の先頭に0bを付けて2進数であることを示します。

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

具体的な例をいくつか見てみましょう。

# 10進数の5を2進数に変換
print(bin(5))  # 出力: 0b101
# 10進数の20を2進数に変換
print(bin(20))  # 出力: 0b10100
# 10進数の255を2進数に変換
print(bin(255))  # 出力: 0b11111111

これらの例では、異なる10進数を2進数に変換し、その結果を表示しています。

2進数表記のフォーマット

bin関数の出力には0bが付いていますが、これを取り除きたい場合があります。

例えば、ユーザーに見せる際には0bが不要な場合が多いです。

bin関数の出力形式

bin関数の出力形式は、先頭に0bが付いた文字列です。

これはPythonが2進数であることを示すためのプレフィックスです。

出力から0bを取り除く方法

0bを取り除くには、文字列操作を行います。

以下にその方法を示します。

# 10進数の10を2進数に変換し、0bを取り除く
binary_representation = bin(10)[2:]
print(binary_representation)  # 出力: 1010

この例では、bin関数の出力から先頭の2文字(0b)をスライスして取り除いています。

他にも、format関数を使って2進数に変換する方法もあります。

# 10進数の10を2進数に変換(format関数を使用)
binary_representation = format(10, 'b')
print(binary_representation)  # 出力: 1010

この方法では、format関数を使って直接2進数の文字列を得ることができます。

以上が、Pythonで10進数を2進数に変換する方法です。

bin関数を使えば簡単に変換できますし、必要に応じて0bを取り除くこともできます。

応用例

ここでは、2進数と10進数の相互変換を実際のプログラムでどのように行うかを見ていきます。

特に、ユーザーからの入力を受け取り、その入力を検証し、変換結果を表示する方法について詳しく解説します。

ユーザー入力を受け取る

まずは、ユーザーからの入力を受け取る方法について説明します。

Pythonでは、input関数を使ってユーザーからの入力を受け取ることができます。

input関数を使ったユーザー入力の取得

input関数は、ユーザーからの入力を文字列として受け取ります。

以下の例では、ユーザーに2進数を入力してもらい、その入力を変数に格納します。

# ユーザーに2進数を入力してもらう
binary_input = input("2進数を入力してください: ")

入力値の検証方法

ユーザーからの入力が正しい形式であるかどうかを検証することは重要です。

例えば、2進数の場合、入力が0と1のみで構成されているかを確認する必要があります。

以下の例では、入力が2進数であるかを検証する方法を示します。

# 入力が2進数であるかを検証する関数
def is_binary(s):
    return all(c in '01' for c in s)
# ユーザーに2進数を入力してもらう
binary_input = input("2進数を入力してください: ")
# 入力が2進数であるかを検証
if is_binary(binary_input):
    print("入力は有効な2進数です。")
else:
    print("入力は無効な2進数です。")

変換結果の表示

入力が有効な2進数であることが確認できたら、その2進数を10進数に変換し、結果を表示します。

# 入力が2進数であるかを検証する関数
def is_binary(s):
    return all(c in '01' for c in s)
# ユーザーに2進数を入力してもらう
binary_input = input("2進数を入力してください: ")
# 入力が2進数であるかを検証
if is_binary(binary_input):
    # 2進数を10進数に変換
    decimal_output = int(binary_input, 2)
    print(f"2進数 {binary_input} は 10進数 {decimal_output} です。")
else:
    print("入力は無効な2進数です。")

変換結果をわかりやすく表示する方法

変換結果をわかりやすく表示するためには、フォーマット文字列を使用することが有効です。

Pythonのフォーマット文字列を使うことで、出力を整形することができます。

フォーマット文字列を使った出力

以下の例では、フォーマット文字列を使って変換結果をわかりやすく表示します。

# 入力が2進数であるかを検証する関数
def is_binary(s):
    return all(c in '01' for c in s)
# ユーザーに2進数を入力してもらう
binary_input = input("2進数を入力してください: ")
# 入力が2進数であるかを検証
if is_binary(binary_input):
    # 2進数を10進数に変換
    decimal_output = int(binary_input, 2)
    # フォーマット文字列を使って出力
    print(f"2進数 {binary_input} は 10進数 {decimal_output} です。")
else:
    print("入力は無効な2進数です。")

このようにして、ユーザーからの入力を受け取り、その入力を検証し、変換結果をわかりやすく表示することができます。

これで、2進数と10進数の相互変換を行う基本的なプログラムが完成しました。

実践的なサンプルコード

ここでは、実際にPythonを使って2進数から10進数、そして10進数から2進数への変換を行うプログラムを作成します。

具体的なサンプルコードとその解説を通じて、理解を深めていきましょう。

2進数から10進数への変換プログラム

まずは、2進数を10進数に変換するプログラムを作成します。

完全なサンプルコード

以下のコードは、ユーザーから2進数を入力として受け取り、それを10進数に変換して表示するプログラムです。

# 2進数から10進数への変換プログラム
# ユーザーから2進数を入力として受け取る
binary_str = input("2進数を入力してください: ")
try:
    # 2進数を10進数に変換
    decimal_number = int(binary_str, 2)
    print(f"2進数 {binary_str} は 10進数 {decimal_number} です。")
except ValueError:
    print("無効な2進数が入力されました。")

コードの解説

  1. ユーザーから2進数を入力として受け取る:

input関数を使って、ユーザーから2進数の文字列を入力として受け取ります。

  1. 2進数を10進数に変換:

int関数を使って、入力された2進数の文字列を10進数に変換します。

このとき、int関数の第二引数に基数として2を指定します。

  1. 変換結果を表示:

print関数を使って、変換結果を表示します。

  1. エラーハンドリング:

try-exceptブロックを使って、無効な2進数が入力された場合にエラーメッセージを表示します。

10進数から2進数への変換プログラム

次に、10進数を2進数に変換するプログラムを作成します。

完全なサンプルコード

以下のコードは、ユーザーから10進数を入力として受け取り、それを2進数に変換して表示するプログラムです。

# 10進数から2進数への変換プログラム
# ユーザーから10進数を入力として受け取る
decimal_str = input("10進数を入力してください: ")
try:
    # 10進数を整数に変換
    decimal_number = int(decimal_str)
    # 10進数を2進数に変換
    binary_str = bin(decimal_number)[2:]
    print(f"10進数 {decimal_str} は 2進数 {binary_str} です。")
except ValueError:
    print("無効な10進数が入力されました。")

コードの解説

  1. ユーザーから10進数を入力として受け取る:

input関数を使って、ユーザーから10進数の文字列を入力として受け取ります。

  1. 10進数を整数に変換:

int関数を使って、入力された10進数の文字列を整数に変換します。

  1. 10進数を2進数に変換:

bin関数を使って、整数を2進数の文字列に変換します。

このとき、bin関数の出力から0bを取り除くためにスライス[2:]を使用します。

  1. 変換結果を表示:

print関数を使って、変換結果を表示します。

  1. エラーハンドリング:

try-exceptブロックを使って、無効な10進数が入力された場合にエラーメッセージを表示します。

以上で、2進数と10進数を相互に変換するための実践的なサンプルコードとその解説を終わります。

これらのプログラムを実際に動かしてみることで、理解が深まるでしょう。

目次から探す