2,8,16進数 基数変換
例題
H22.秋 問1 16進小数3A.5Cを10進分数で表したものはどれか。 ア 939/16 イ 3735/64 ウ 14939/256 エ 14941/256
解説
2,8,16進数それぞれの数え方が分かれば簡単っぽいです。
僕らは普段、数の桁を数えるときに「いち、じゅう、ひゃく、せん、まん...」と数えます。しかし、10進数の100と2,8,16進数の100は表記は同じでも値は違うのです。1,10,100,1000の値を全て10進数の値に直すとこんな感じになります。
表記 1 10 100 1000 2進数 1 2 4 8 8進数 1 8 64 512 16進数 1 16 256 4096
これが基数変換です。眺めていても分からないので練習をしましょう。
「16進数の100を10進数にすると?」
256
「8進数の1000を10進数にすると?」
512
「2進数の1001を10進数にすると?」
9
と言った具合に、パパっと答えられるようになりましょう。
補足:16進数は10以上の数字をアルファベットで補います。こんな感じ。 0,1,2,3,...,9,A,B,C,D,E,F
さて、問題に戻ります。
16進小数3A.5Cを10進分数で表したものはどれか。
3Aはいいとして、0.5Cはどうやって...。これも対応表があればすぐに解決します。
※見やすいように、今度は左を大きな桁にしています。
表記 1000 100 10 1 0.1 0.01 2進数 8 4 2 1 1/2 1/4 8進数 512 64 8 1 1/8 1/64 16進数 4096 256 16 1 1/16 1/256
うん、これで大丈夫です。慣れるまでは表と照らし合わせながらやっていけばいいでしょう。さあ、これで整数部分も小数部分もうまいこと基数変換ができるはずです。
手順
問題の基数変換は、少し丁寧めに書くとこんな手順です。
3Aを10進数にする
30 → 16 x 3 = 48
A →10
3A = 48 + 10= 58
0.5Cを10進数にする
0.5 → 1/16 x 5 → 5/16
0.0C → 1/256 x 12 → 3/64
0.5C = 23/64
整数部分と小数部分を足す
58 + 23/64
= 3735/64
よって、答えはイ。
(次回) 2進数で引き算をしよう
少しややこしくなりますが、次回は2進数で「足し算だけで引き算をする」という何とも奇妙なお話をまとめます。