基本情報技術者 PR

【基本情報】16進数と10進数を変換する方法を解説

記事内に商品プロモーションを含む場合があります

●この記事で学べること
・16進数を10進数に変換する方法
・10進数を16進数に変換する方法

数える時に大切な「位」

10進数の数え方

10進数は0~9の10個の数字を使って数を数えます。10進数では0,1,2,3,4,5,6,7,8,9と10個の数字で1桁の数字を表現した後、2桁目の数を1上げて1桁目の数字を0に戻します。

つまり、2桁目の数字には10個分の数字の重みがあると言えます。もっと分かりやすく飴玉を使って考えてみましょう。例えば、「16」という数字は2桁目が1、1桁目が6です。なので下の画像のように、10個入りの袋が1つとばらの飴玉が6個あるという風に考えることが出来ます。これが、数字の「位」による重みです。

例えば、「234」という数字は3桁目が2、2桁目が3、1桁目が4です。3桁目は10個入りの袋が更に10個入った箱のようなイメージです。10個入りの袋が10個箱に入っているので、3桁目に入っている飴玉は10×10=10²=100個となります。

同じように、4桁目は10個入りの袋が10個入った箱が10個トラックに入っていると考えられるので、4桁目に入っている飴玉は10×10×10=10³=1000個となります。

10進数の位の重み
1桁目・・・10⁰=1(バラの飴玉)
2桁目・・・10¹=10(袋に入った飴玉)
3桁目・・・10²=100(箱に入った飴玉)
4桁目・・・10³=1000(トラックに入った飴玉)
n桁目・・・\( 10^{ n-1} \)

16進数を10進数に変換する

16進数は0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16個の英数字を使って数を数えます。16進数では16個の英数字で1桁の数字を表現した後、2桁目の数を1上げて1桁目の数字を0に戻します。

2桁目の数字は16個の英数字が積み上がった後に、やっと1つ増やすことが出来ます。つまり、2桁目の数字には16個分の数字の重みがあると言えます。飴玉で例えると、2桁目は飴玉16個入りの袋で、1桁目は飴玉1個のバラになります。なので、例えば、16進数の「14」は飴玉20個分になるので、16進数の「14」=10進数の「20」になります。

3桁目も10進数と同様に、16個入りの袋が16個入った箱と考えることが出来ます。16進数は使える英数字が0~9とA~Fの16個もあるので、16ずつ位の重みが上がっていくのがポイントです。なので、例えば、16進数の「2B0」は、16²=256個の箱が2つ、16個入りの袋がB(=11個)なので10進数では「688」になります。

16進数の位の重み
1桁目・・・16⁰=1(バラの飴玉)
2桁目・・・16¹=16(袋に入った飴玉)
3桁目・・・16²=256(箱に入った飴玉)
4桁目・・・16³=4096(トラックに入った飴玉)
n桁目・・・\( 16^{ n-1} \)

16進数を10進数に変換する方法

16進数の位にそれぞれ重みを付けていき、最後に足した数字が10進数となります。例で16進数の「C02A」を10進数に変換します。「C02A」にそれぞれ重みを付けて足し算をすると、49194になるので、2進数の「C02A」は10進数の「49194」であることが分かります。

ちなみに小数点以下でも同じことが言えます。

10進数を16進数に変換する

逆に10進数を16進数に変換する方法を考えてみます。先程書いたとおり、16進数の位にはそれぞれ重みがありました。位によって入れることが出来る飴玉の数が違いましたね。

16進数の位の重み
1桁目・・・16⁰=1(バラの飴玉)
2桁目・・・16¹=16(袋に入った飴玉)
3桁目・・・16²=256(箱に入った飴玉)
4桁目・・・16³=4096(トラックに入った飴玉)
n桁目・・・\( 16^{ n-1} \)

10進数の「300」を16進数に変換してみましょう。300個の飴玉を梱包していきます。飴玉が4096個入るトラックだと大きすぎるのでトラックは使えません。飴玉が256個入る箱は使えそうなので箱に梱包します。すると飴玉が44個余ります。次は44個の飴玉を袋に梱包します。16個入りの袋を2つ使って32個の飴玉を梱包します。すると、12個の飴玉が余るので、その飴玉はバラで持ちます。箱は3桁目の重み、袋は2桁目の重み、バラの飴玉は1桁目の重みだったので、10進数の「300」は16進数で「12C」になることが分かります。

このように、10進数の数を16進数の位の重みで分散させた結果が、16進数で表記した数になります。

10進数を16進数に変換する方法

10進数の数を商が16未満になるまで割り続けて、その余りの数を繋げると16進数になります。例えば下の画像では、10進数の「1000」を16で割り続けて出て来た余りを一番下から繋げ合わせ、16進数で「3E8」と表現できることを示しています。62÷16=3余り14で商は3です。商が16未満なのでここで割り算は終了になります。

(おまけ)10進数を16進数に変換する公式の意味を考える

1000を16進数に変換した例から公式の意味を考えてみたいと思います。

最初に1000÷16=62余り8と求めました。これは、1000個の飴玉を16個入りの袋に梱包していった時に、袋が62個、バラの飴玉が8個発生することを表します。なので、「3E8」の1桁目は8になっているのです。

次に62÷16=3余り14と求めました。これは16個入りの袋を16個集めて箱詰めした時に、3個の箱が出来て、14個の袋が余ることを表します。なので、16¹を表す2桁目は14=Eになり、16²を表す3桁目は3になります。箱は3個しか出来なかったので、トラックに積むことは出来ません。

箱は3個しか出来なかったので、トラックに積むことは出来ません。よって、これ以上ペアを作ることは出来ません。

1000=(16²×3)+(16¹×14)+(16⁰×8)となることが分かりました。よって、1000の16進数表現は「3E8」になります。

基本情報技術者試験での出題例

令和5年度問1

基本情報技術者
科目A 令和5年度問1

16進小数0.Cを10進小数に変換したものはどれか。

ア 0.12     イ 0.55     ウ 0.75     エ 0.84

正解と解説

正解は”ウ”

16進数では0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fと数が増えます。16進数のCは10進数の12に該当します。なので、0.Cは\(\frac{1}{16}\)×12=0.75となります。

平成30年度秋期問1

基本情報技術者
午前試験 
平成30年度秋期問1

16進数の小数0.248を10進数の分数で表したものはどれか。

ア \(\frac{31}{32}\)
ウ \(\frac{31}{512}\)

イ \(\frac{31}{125}\)
エ \(\frac{73}{512}\)

正解と解説

正解は”エ”

16進数「0.248」の各桁の重みはそれぞれ下のようになります。

\(\frac{2}{16}\)+\(\frac{4}{256}\)+\(\frac{8}{4096}\)=\(\frac{73}{512}\)となるので、答えはエです。

関連記事