
基数変換をできるだけ難しい計算をせずに解きたい人へ(16進数→2進数→10進数)#1
はじめまして。hirokiと申します。
都内で情シスをしている30前半のどこにでもいる普通のエンジニアです。
情報処理試験でよく出てくる基数変換って難しいなと思ったことありませんか?バリバリの文系出身の私も最初はそうでした。テキストでこの部分の説明を読んだ時も「う~ん、なるほどよくわからん・・・」ってなってました。
しかしこの基数変換は午前の選択問題や、セキュリティ、ネットワーク関連の分野(IPアドレス、サブネットマスク、MACアドレスなど)でよく問われるのでマスターしておかないと後々しんどくなる部分かと思います。
勉強を進めていく中で私なりのやり方を見つけたのでちょっと紹介させてください。
個人的に情報処理技術者試験では「16進数 ⇔ 2進数 ⇔ 10進数」の変換ができれば何も問題はないと思ってます。午前問題でこれ以外の進数の変換問題が出てくると思いますが、対策し切れなかったり難しく感じてしまう人は無視しても良いと思ってます。これだけ完璧にできれば、先ほど書いたセキュリティ、ネットワーク関連の分野(IPアドレス、サブネットマスク、MACアドレスなど)は十分対応できると思います。
今回は「16進数 → 2進数 → 10進数」の流れで説明します。
16進数→2進数への変換
2進数→10進数への変換
16進数→10進数への変換
1. 16進数→2進数への変換
16進数は2進数4桁で表現できる特徴があります。これはとても重要です!
この特徴に沿って16進数で表現されている文字を2進数の4桁に置き換えていけばOKです。本当にこれだけです!
下準備として試験の時は何も難しいことを考えずに下の表を空いてるスペースに書き込んでしまいましょう。これだけで準備完了です。

試しに例題をやってみましょう。
例題)16進数「7F3」を2進数に置き換える
上記の対応表を見ると16進数「7」は2進数「0111」、16進数「F」は2進数「1111」、16進数「3」は2進数「0011」であることがわかります。

あとはこれを順番通りに入れ替えて、この時にできた2進数「011111110011」が答えになります。

本当にこれだけです!16進数が何桁になってもこのやり方でOKです。
2. 2進数→10進数への変換
2進数から10進数に関しては変換表を使って一発で求めることができません。ですがこちらも簡単な掛け算と足し算だけで表現ができます。まずは以下のような簡単な下準備をしてください。
①-1. 箱を8つ書く。(本当は何個でもいいのですが、IPアドレス系の問題はこの数で十分なのでいったん8個にしています。)

①-2. 一番左の箱の上に1を書く。

①-3. 右から左に一つ前の数字を2倍した値を箱の上に書いていく。

これで下準備は完了です。こちらも試しに例題をやってみましょう。
例題)2進数「1101」を10進数に置き換える
②-1. 2進数の値をこの箱に右詰めで埋める。(この時に何も入っていない箱は無視しちゃってください。)

②-2. [1]が入った箱の上に書かれている数字を足し算していく。

8+4+1=13
なので2進数「1101」は10進数「13」になります。
せっかくなのでもう一問やってみましょう!
例題)2進数「11000110」を10進数に置き換える
③-1. 先ほどと同じように2進数の値をこの箱に右詰めで埋める。

③-2. [1]が入った箱の上に書かれている数字を足し算していく。

128+64+4+2=198
なので2進数「11000110」は10進数「198」になります。
3. 16進数→10進数への変換
16進数から10進数はテキストに書いてあるような小難しい計算をしたら一発で出せますが、慣れてくるまでは16進数を一度2進数に変換し、その2進数を10進数に変換するやり方がおすすめです。

察しのいい方ならお気づきですが、上記の1,2でやった方法で順番に変換を行えば簡単な掛け算と足し算だけで16進数→10進数の変換ができます。
本当にそうなるかは練習がてらに皆さんご自身で計算してみてください!
どうでしょうか。これなら何とかできそうな気がしませんか?
慣れてきたら自然と計算で求められるようになったり、数字を見ると大体頭の中で変換できるようになりますが、慣れるまではこのやり方で問題を解くのもありだと思います!参考になりそうだったらぜひ試してみてください!
次回は今回の流れと反対の「10進数 → 2進数 → 16進数」の説明をしたいと思います。
(といっても2進数 → 16進数の部分は今回とほとんど同じです。)
------------------
photo:いらすとや(女性会社員の表情のイラスト「驚いた顔・ひらめいた顔・悩んだ顔・焦った顔」 | かわいいフリー素材集 いらすとや (irasutoya.com))
#IT #勉強法 #資格 #国家資格 #情報処理技術者試験 #基本情報技術者試験 #応用情報技術者試験 #基数変換 #n進数