読者です 読者をやめる 読者になる 読者になる

【FE,IP】n進数の扱い方【まとめ】

今回の記事は「ITパスポート試験」や「基本情報技術者試験」などで出題される、
n進数の扱いについて書きます。

そもそも10進数とは
まず、我々が普段使っている数字は10進数といい、
「1〜9」の10個の数字で構成されています。
1 → 2 → 3 →・・・と続いていき、9 の次は 10 です。
10 になったときに、十の位が「1」になり、一の位が「0」に戻ります。
以降も、百の位、千の位・・・と続いていきます。
この「◯の位」というのは、10進数の場合 10^n で表すことができます。

f:id:tatsu-blog:20161119013706p:plain

つまり、「◯の位」がいくつあるのかを数えることで数字を表すことができます。
例:「51369」(10進数)↓

f:id:tatsu-blog:20161119013747p:plain

この場合だと、
一万の位が5つ、千の位が1つ、百の位が3つ、十の位が6つ、一の位が9つ
ということになります。
この考え方を頭の片隅においた上で、2進数を考えます。

10進数 → 2進数の変換
2進数の場合は 2^n で位を表すことができます。

f:id:tatsu-blog:20161119014510p:plain

では、10進数→2進数の変換を考えてみましょう。

f:id:tatsu-blog:20161119014815p:plain

手順は、元の数(例:210)から 2^n で引ける最大の数を引いていきます。
210 - 128 = 82
  82 -   64 = 18
  18 -   16 =   2
    2 -     2 =   0
そして、引いた位の場所に 1 を立てます。
そうすると「1101 0010」になります。
つまり、「210(10進数)」=「1101 0010(2進数)」ということです。
この方法は、◯^n を使うことで、何進数でも表すことができます。

2進数 → 8進数 , 10進数 , 16進数の変換
まずは、2進数→10進数の変換です。

f:id:tatsu-blog:20161119020111p:plain

要するに10進数→2進数の変換の逆です。
1が立っている場所と 2^n を書けてそれらを合計すると変換できます。

続いて2進数→8進数の変換です。
8進数は「0〜7」の8個の数字で構成されています。
なので、2進数を下から3つずつ区切りその中で 2^n の位を作ります。
そうすると各ブロックの合計が最小で0、最大で7となり8進数として扱うことができます。

f:id:tatsu-blog:20161119020129p:plain

「210(10進数)」=「1101 0010(2進数)」=「322(8進数)」

最後に、2進数→16進数の変換です。
16進数は「0〜9」と「A〜F」の16種類の英数字を扱います。
なので、2進数を下から4つずつ区切りその中で 2^n の位を作ります。
そうすると各ブロックの合計が最小で0、最大で15となり16進数として扱うことができます。

f:id:tatsu-blog:20161119020138p:plain

 「210(10進数)」=「1101 0010(2進数)」=「D2(16進数)」

今回はn進数の扱いについて書いてみました。
ITパスポート試験基本情報技術者試験 などでよく出題される分野で、とくに 基本情報技術者試験 ではプログラム言語である アセンブラ でも進数の扱いが必要になります。試験を受けられる方は理解を深めておく必要があると思います。

 

合わせてこちらの記事もどうぞ↓