【図解】「2進数=10進数=16進数」変換するための計算方法を解説

【図解】「2進数=10進数=16進数」変換するための計算方法を解説


私たちが日常的に使って慣れ親しんでいるのが10進数です。
0から9まで10種類の数字で表し、9の次に1桁上がります。人間が1番数えやすい数え方とされています。

そして今回のメインテーマ2進数と16進数。これはコンピュータが好む数え方です。それぞれの数え方の違いをわかりやすくまとめるとこうなります。

案内人

今回は3種類の数字の数え方を変換するための計算方法の解説です。

  • 2進数→コンピューターが理解しやすい数え方
  • 10進数→人間が理解しやすい数え方
  • 16進数→コンピューターを扱う人間が理解しやすい数え方
2進数・10進数・16進数の計算方法がこちら



全くわからない方でも理解しやすいように計算式だけではなく、図解も交えて解説していきます。それではいってみましょう。



目次

「10進数」について

まずは普段私達が特別に意識することなく使っている10進数についてです。日本を含め世界の標準は10進法で数えるのが一般的。

なぜ10進法が採用されたかというと、両手を使い最も数えやすいのが数字の10ですね。そのような理由からそうなったと言われます。

数え方は、0~9の10個の数を組み合わせで10進数が表されます。

0、1、2、3、4、5、6、7、8、9 まで10数えたら1桁繰り上がって10からまた数える。それを繰り返して数字が表されているというわけですね。

「2進数」と「16進数」

私たち人間がコンピュータを使いプログラミングをするときは10進数ではなく2進数の方が何かと都合が良いです。

なぜかというと、コンピュータの根本の部分は0 (OFF)と1 (ON) の2進数で作られています。画像、音声、動画からWindowsなどのOSまで全ての元となるプログラムが2進数によって計算されています。

2進数を英語にするとbinary digitです。
それを略したものがbit(ビット)。bit、そしてbyteについての基礎知識を解説した記事があります。あわせてご覧ください。


では、2進数の話にもどします。
10進数25678を2進数でコンピュータが理解できる数に変換してみます。

  • 【10進数】25678(変換前)
  • 【2進数】110010001001110(変換後)

これがパッと見でわかる方は凄い人です。大抵の方はこれを見ただけではどんな計算方法で変換したのかわからないかと思います。

10進数から2進数への計算方法は後ほど解説します。】

次に16進数についてです。16進数というのはコンピュータを扱う我々人間側が一番理解しやすいという数字の数え方になります。

記事の冒頭にも書きましたが、わかりやすくまとめるとこうゆうことです。

  • 2進数→コンピューターが理解しやすい
  • 10進数→人間が理解しやすい
  • 16進数→コンピューターを扱う人間が理解しやすい


16進数に変換すると

644Eです。こちらも普段使わない私たちにとっては全く意味が伝わりません。

プログラムの理解度を深めるためにはこれらの知識が必要不可欠と言われていて、2進数 = 10進数 = 16進数 と自由自在に変換できる力が求められます。このような問題は図にした方が伝わりやすく理解しやすいと思うので最後の方の章でいくつか図にしてみました。

まず全てに共通しているのが、10進数のように1からではなく0からスタートしているという事です。表で比較してみましたのでご覧ください。

10進数0123456789
16進数0123456789
2進数01101110010111011110001001
10進数10111213141516
16進数ABCDEF10
2進数10101011110011011110111110000

2進数

2進数は2を基数とした数え方で0と1の組み合わせで表されます。2進数はコンピュータと最も相性が良い数え方とされています。

16進数
16進数は16を基数とした数え方で0~9、A~Fの計16ある数字の組み合わせで表されます。16進数はコンピュータ、人間と両面から見て比較的相性が良い数え方とされています。

2進数と相性が良いという証拠にこのような比較もできます。

  • F (16進数) = 1111 (2進数)
  • FF (16進数) = 1111 1111 (2進数)
  • FFF (16進数)= 1111 1111 1111 (2進数)
  • FD (16進数) = 1111 1101 (2進数)
  • FDD (16進数)= 1111 1101 1101 (2進数)
  • CA8 (16進数)= 1100 1010 1000 (2進数)

上で10進数・16進数・2進数と比較した表と合わせてみて下さい。法則らしきものがあるのがわかります。ただやはり計算の仕方も知っておきたいので次の章ではそちらを紹介したいと思います。

「2進数=10進数=16進数」計算方法

それでは実際に計算していきます。このような順番でいきます。

5パターンの計算方法を順に解説

  1. 「2進数」から「10進数」に変換
  2. 「10進数」から「2進数」に変換
  3. 「2進数」から「16進数」に変換
  4. 「16進数」から「2進数」に変換
  5. 「16進数」から「10進数」に変換

「2進数 」 →「10進数」

まず2進数から10進数への計算方法を紹介します。下に0と1で組み合わせた数字を用意しました。

「2進数」10011011

この0と1の2進数を10進数に変換して解いていきます。それでは用意した図をご覧ください。

桁の重み(ケタのおもみ)というのは、各数字の単位のことです。10進数なら「10→100→1000→10000」と桁が上がっていくこと。10進数の場合、1つ桁が上がごとに数値が10倍に増えます。

2進数にも桁の重みがあって、この場合は1つ桁が上がるごとに2倍になっていきます。1番右から計算式にすると以下のようになります。

✅右端の数字から順に。足した数字の合計が10進数

(右端の桁から)

  • 1桁目 2の0乗(=1)×2進数(1の位)=A
  • 2桁目 2の1乗(=2)×2進数(10の位)=B
  • 3桁目 2の2乗(=4)×2進数(100の位)=C
  • 4桁目 2の3乗(=8)×2進数(1000の位)=D
  • 5桁目 2の4乗(=16)×2進数(10000の位)=E
  • 6桁目 2の5乗(=32)×2進数(10000の位)=F
  • 7桁目 2の6乗(=64)×2進数(10000の位)=G
  • 8桁目 2の7乗(=128)×2進数(10000の位)=H

A~G全ての桁の数字を足した合計が変換された10進数




▼「2進数… 10011011」 これを計算式に当てはめてみましょう。

  • 1桁目 2の0乗(=1)×1(1の位)=1
  • 2桁目 2の1乗(=2)×1(10の位)=2
  • 3桁目 2の2乗(=4)×0(100の位)=0
  • 4桁目 2の3乗(=8)×1(1000の位)=8
  • 5桁目 2の4乗(=16)×1(10000の位)=16
  • 6桁目 2の5乗=32)×0(10万の位) =0
  • 7桁目 2の6乗(=64)×0(100万の位)=0
  • 8桁目 2の7乗(=128)×1(1000万の位)=128


1+2+0+8+16+0+0+128=155(10進数)

上記の計算式をわかりやすく図解にします。


このように「2進数… 10011011」=「10進数… 155」になります。

【2進数 → 10進数 計算方法】「2進数… 10011011」=「10進数… 155」になる
「2進数… 10011011」=「10進数… 155」

「10011011」は8ケタあるのでコンピュータのデータだと8bitになります。

「10進数」→「2進数」

こちらも図だけ見ればわかるようにしました。

「10進数… 155」2で割って、余りがあれば1無ければ0と記していきます。0になるまで商を割っていき最後に1が余った所、下から読み上げていきそれをつなげると2進数になります。

【10進数→2進数 計算方法】「10進数… 155」=「2進数… 10011011」になる

155 (10進数) = 10011011 (2進数)

「2進数 」 →「16進数」

こちらはこのようになりました。

【2進数… 10011011】→【16進数… 9B】

2進数から16進数に変換する場合は4つずつ区切ります。

【2進数→16進数 計算方法】「2進数… 10011011」=「16進数… 9B」になる

「16進数」→「2進数」

上の問題を逆さに計算します。巻き戻しです。

【16進数→2進数 計算方法】「16進数… 9B」=「2進数… 10011011」になる

「16進数」→「10進数」

16進数から10進数にする場合は、分解したそれぞれの数字に16の○乗を掛けます。FF8Dとか数が多くなる場合は掛ける位の数も16の2乗=256、16の3乗=4096、16の4乗=65536と増やしていきます。

【16進数→10進数 計算方法】「16進数… 9B」=「10進数… 155」になる

「2進数」「16進数」とプログラミングの関係

コンピューターと2進数、16進数は相性がいいです。コンピューターは2進数で計算をしています。

このように内部的には2進数が大事になってきますが、C言語などプログラミングにおいては16進数が使われる機会の方が多いかと思います。

まとめ

2進数や16進数はプログラミングにも大きくかかわってきます。「2進数=10進数=16進数の計算方法」は、学習している人は覚えておきたい基礎知識です。
今回の記事ではそのような方もわかりやすいように図解で解説しました。参考になれば幸いです。

8進数から他の進数への計算方法は別記事で解説しています。







よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ジョン齊藤のアバター ジョン齊藤 ブログ運営者 / 執筆者

ブログ歴7年 / 10万PV達成 / ブログの戦闘力を高める・Webマーケティング / 使用テーマSWELL

コメント

コメントする

目次
閉じる