無料体験

【情報Ⅰ#62】16進法とは|16進数から2進数や10進数への変換、計算方法|情報1の授業動画【高校・共通テスト対策】プログラミング

  • 前回は、2進法について解説しました。 2進法とは「2以上の数になったら繰り上がりを行う、数字の表記法」のことで、0と1の組み合わせだけで数字を表現します。 また、10進法の原理を応用すれば、2進数と10進数の双方向の変換ができます。 そのときに便利な表がこちらです。これはすぐに書けるようにしておくと良いでしょう。 さて本日は、コンピュータにとっても人間にとっても都合の良い16進法についてお話ししていきますよ。

①16進法の原理

  • 本日は16進法についてお話ししていきます。 「2になったら繰り上がりを行う、数字の表記法」を2進法と説明しました。それに対し、16進法は16になったら繰り上がりを行う、数字の表記法となります。 では、2進法と同様に0から1ずつ足して考えてみましょう。 まずは10進数の0、これは16進数でも0です。次は1、0+1=1なので、これは16進数でも1です。 2~9までも16進数では同様です。まだ16に達していませんので、桁上りもありません。 では、次に10進数の10ですが、16進数ではAで表します。 16進数では16まで桁上りができませんので、10進数の10になったときでも桁上りができません。数字も使い切りましたので、アルファベットを使おうということになったのです。 次に11はB、12はCというように、15のFまで、アルファベットが1つずつ増えていきます。 そして次の16になった時、ようやく桁上りできますので、次の桁が1となり、今の桁は0に戻って10となるわけです。
  • アルファベットを使う以外の原理は2進法と一緒だね。

②16進法は便利

  • ねぇ、2進法はコンピュータでデジタル処理するときに利用するよね?10進法は人間の世界で数を数えたりするのに利用するよね?16進法ってどこで利用するのさ?
  • いい質問ですね。 まずは、なぜ人間が10進法を使うようになったかを考えてみましょう。 今、私達が使っている数字。これは人類がこの世に生まれた最初からあったわけではなく、長い人類史の中のどこかのタイミングで発明されています。
Q.私達が10進法を使うようになった理由は、ある何かの数が10だったからと言われています。
その何かとは一体何でしょう。

A.人間の指の数です。
  • 古くから人間は数を数えるときに、指を折って数えていました。両手の指10本を1つの単位として10で一区切り、11からは2人目の人の指を使う、といった感じで物を数えていき、10進法が定着したのだと言われています。 みなさんも小さい頃、指を折って数字を数えていた時期もあるかと思います。10本の指を折って数える動作と10進法は非常に相性が良いというわけですね。
  • へぇ、なるほどね。じゃあ人間の手が豚の蹄のように2つに分かれているだけだったら、2進法が定着したかもね。
  • はい。おそらくそうなのだと思います。 一方で、コンピュータには指がありませんので、人間が指を折って数える代わりに、電流が流れる、流れないという二種類の動作で数を扱います。 そのため、コンピュータは10進法よりも、2種類の数字しか使わない2進法との相性が優れていると言えるでしょう。 アメリカ人と話すときには英語で話すように、コンピュータと話す、つまりコンピュータ扱うときには2進法を使わなければいけません。 2進法の不便な点、それは覚えにくいということと、分かりづらいということです。 例えば「餃子500円」と書いてあって、それに501円払ったり、499円を払い間違える人なんていないのです。 しかし「餃子、111110100円(2進数)」と書いてあったら、分かりづらいし、覚えられないという人がほとんどです。 もし、ドラえもんのもしもボックスを使って、「もしも2進法しか扱えない世界になったら」と言ったら、0と1しか使えない制限下で、世界中は大混乱に陥るでしょう。 その点、コンピュータは間違えませんし、単純作業が得意。その処理も超高速、さらに記憶力も抜群です。ですから、0と1という2つの単純な数で大量のデータとして処理したほうが効率が良いのです。 そこで、コンピュータにとっては2進法のように扱えて、人間にとっては覚えやすく分かりやすい書き方が求められるようになりました。そのような都合のよい書き方が、16進法なのです。

③2進法との関係性

  • なぜ、16進法がコンピュータにとっても人間にとっても都合が良いのか。それを説明していきます。 こちらのマトリクス表は2進数、16進数、10進数を0~15までまとめたものです。このマトリクス表は超重要なので、丸暗記するか、試験で2進法や16進法の問題が出たときはまず、余白に書き込むようにしましょう。 表を見て気づくように、1桁の16進数が最大値Fのとき、4桁の2進数も最大値1111になることが分かりますよね?
  • うん、そうだね。
  • では、2桁の16進数の最大値FFのときはどうなるでしょう。10進数では255、2進数では1111 1111、つまり8桁の最大値となります。 つまり、16進数の1桁分は2進数の4桁に相当するということなのです。 よって、2進数を16進数に変換する場合、2進数を4桁ごとに区切れば簡単です。その区切りごとに対応表を見て16進数に置き換えればいいということになります。 例えば、2進数の「101100110100111010100001」。人間にとっては、分かりづらく覚えにくい数字ですね。 これを4桁ごとに区切ります。 1011 0011 0100 1110 1010 0001となりますね。左から16進数に変換していくと、1011はB、0011は3、0100は4、1110はE、1010はA、0001は1となりますので、16進数に直すとB34EA1となるのです。
  • これなら簡単!さっきより断然覚えやすくなった。
  • このように2進数を16進数に置き換えるだけで、桁の長さが1/4になり人間にとっても分かりやすくなりました。 逆に、B34EA1を2進数にするときは、1文字ずつ切り取って、先程の変換表のとおりに変換すれば良いだけなので、コンピュータにとっても都合が良いということになりますね。
  • でもさ、16進数を使う場面ってあるの?
  • 16進数をどこで使うかというと、Webサイトで色を指定するときに使ったり、ネットワーク機の固有の番号となるMACアドレスを指定したりする際に使われています。 こちらについては、また別の領域展開の回で詳しく説明をしますので、まずは16進法の考え方や、2進数→16進数の変換方法などをおさえておいてくださいね。

まとめ

  1. 16進法とは「16になったら繰り上がりを行う、数字の表記法」のことを言う。
  2. 人間にとって相性の良い10進法と、コンピュータにとって相性の良い2進法の良いとこ取りをしたのが16進法。
  3. 16進数の1桁分は2進数の4桁に相当するため、10進数の15までのマトリクス表があれば、2進数→16進数の変換は簡単に行える。