10進数を2進数に変換するプログラムを作ろう

Google Colabを使って10進数を2進数に変換するプログラムを作成します。

プログラムの手順を確認しましょう

10進数を2進数に変換する手順を確認しましょう。

  • 手順1

    10進数の値を2で割り、商と余りを求める。

  • 手順2

    計算で求めた商を使い、手順1と同じ計算を2より小さくなるまで繰返し行う。

  • 手順3

    繰返しが終わったら、商から順番に求めた余りを全て表示する。

この手順を行えば、人は変換をすることができますが、コンピュータにプログラムで変換をさせる場合には、「手順1」に修正が必要です。

コンピュータは変数にデータを入れながら処理を行います。そのため、計算した余りを残すための変数を用意し、変数にデータを入れる処理が必要になります。

上記の手順をフローチャートにしたものです。手順1を確認しましょう。

まず、商を求める文と余りを求める文と2つ書かないといけないのですね。

商と余りの計算は別々で行います。

Pythonでは商と余りを同時に計算することもできますが、今回は1つずつ求めます。

余りを求めたら、2進数に変換した値を残すための変数に入れるのですね。

Pythonプログラムを実行する準備をしよう

プログラムは「Google Colab」を使って実行します。

次の手順で「Google Colab」を開いてPythonプログラムが実行できるようにしましょう。

  • 手順1

    Google Colabを開きます。開いていない場合は次のリンクを押してページを開きましょう。

  • 手順2

    新しいノートブックを作成します。

    下記の画面から、「+ノートブックを新規作成」ボタンを選びます。

  • 手順3

    ノートブックの名前を「ip01-02]としましょう。

    下記の画面のように、タブの名前を書き換えます。

  • 手順4

    プログラムをコピーして、貼り付けましょう。

    Google Colabへの貼り付けは、キーボードの「Ctrl+V」キーを押して行います。

次のプログラムは、変数dataに代入された10進数の値13を2進数に変換するプログラムです。

プログラムをコピーして「Google Colab」に貼り付けましょう。

# 10進数を2進数に変換する

# 初期データ(ここに変換したい10進数を設定)
data = 13  # 例: 13 を変換

# 手順で使う変数を用意
current = data      # 手順1・2で使う「商」
binary_str = ""     # 手順3で表示する2進数文字列

# 手順2: 商が2で割れなくなるまで繰り返す
while current >= 2:
    # 手順1: 2で割って商と余りを求める
    ###a                     #余りを求める
    ###b                     #商を求める

    binary_str =  str(remainder) + binary_str   # 余りを2進数に変換した文字列の先頭に追加

#商を変換した2進数に付け足す
binary_str = str(current) + binary_str

# 手順3:結果を表示
print(binary_str)

プログラムを「Google Colab」に貼り付けたら、アクティビティ開始の準備が完了です。

Pythonプログラムを完成させて実行しよう

「Google Colab」に貼り付けたプログラムは、13、14行目の「###a」、「###b」の2か所が完成していません。

「###a」と「###b」は手順1の余りを計算する文と、商を計算する文が入ります。

下記の命令一覧からそれぞれあてはまる命令文を選んで貼り付けましょう。

最初に設定してある13の場合、 1101 と表示されれば正解です。

命令一覧の下にはヒントがあります。

ヒントを参考にあてはまる命令文を考えましょう。

命令一覧

「###a」と「###b」にあてはまる命令文を選び、プログラムに貼り付けましょう。

remainder  = current % 2
current = current // 2

ヒント1 : 割り算の商を計算する方法

Pythonで割り算の商を求めるためには演算子「//」を利用します。

例えば、100÷33の商を求めたい場合は以下のように記述します。

100 // 33

「100 // 33」の計算結果は「3」になります。

ヒント2 : 割り算の余りを計算する方法

Pythonで割り算の余りを求めるためには演算子「%」を利用します。

例えば、100÷33の余りを求めたい場合は以下のように記述します。

100 % 33

「100 % 33」の計算結果は「1」になります。

「###a」と「###b」にあてはめたら実行してみましょう。

4行目の値(デフォルトで13)を変えると色々な10進数を入力して確かめることができます。。

完成したら「###a」と「###b」にあてはめた命令文を提出してください。

###aに当てはめた命令文

###bに当てはめた命令文

※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる