問題1~問題4の値を10進数に変換してみましょう。
情報活用編プラス
第2章「コミュニケーションと情報デザイン」
IP01-01
デジタルデータとアナログデータ
基数変換にチャレンジしよう
問題1
2進数「10101」
計算は、手計算でやってみましょう。
問題2
2進数「1111111111111111」
プログラムを使って求めてみましょう。
問題3
16進数「A5D」
計算は、手計算でやってみましょう。
問題4
16進数「ABCD」
16進数を10進数に変換するプログラムを使って求めてみましょう。
下記の16進数を10進数に変換するプログラムを次の手順で実行しましょう。
-
1
プログラムをコピーして、Google colabに貼り付けましょう。
-
2
1行目の「data = ""」に変換したい16進数を入力しましょう。
-
3
実行ボタンを押してプログラムを実行しましょう。
data = "" # 変換したい数(ここでは16進数)を文字列で指定
base = 16 # 基数(2進数なら2、16進数なら16など)
decimal = 0 # 10進数での計算結果を入れる変数(はじめは0)
digit_map = {
'0': 0, '1': 1, '2': 2, '3': 3,
'4': 4, '5': 5, '6': 6, '7': 7,
'8': 8, '9': 9, 'A': 10, 'B': 11,
'C': 12, 'D': 13, 'E': 14, 'F': 15
}
dcount = len(data) # dataの桁数(文字の数)を調べて変数に入れる
# 桁の数だけ繰り返す(左から右へ順に)
for i in range(dcount):
digit = int(digit_map[data[i]]) # i番目の文字の値を取得
# 重みを計算(左端の桁から順に、基数の何乗か)
weight = base ** (dcount - i - 1)
# その桁の値と重みを掛ける
digit = digit * weight
# 桁の値と重みを掛けた結果を10進数に加算する
decimal = decimal + digit
# 最終的に計算した10進数の値を表示する
print(decimal)
解答が気になる場合は、次の「解答を確認しよう」を開いてみましょう。
問題1~問題4の解答を確認する
問題1
21
問題2
65,535
問題3
2,653
問題4
43,981
レベルアップ問題に挑戦!
次の問題5,問題6の値を10進数に変換しましょう。
チャレンジ問題では2進数、16進数以外の進数を10進数に変換します。
ポイントは元の基数で重みを計算するところです。
チャレンジ問題は、16進数を10進数に変換するプログラムを変更することで求めることができます!
プログラムを変更する場合は「2行目」も基数を変更するところに注意しましょう。
問題5
4進数「123」
問題6
7進数「654」
問題5、問題6の解答を確認する
問題5
27
問題6
333
※この再現版では提出は行いません(送信先は未接続です)