2進数と10進数の変換方法を克服しよう!基本情報技術者試験でエンジニアとしての基礎力をつける

2進数と10進数の変換方法を克服しよう!基本情報技術者試験でエンジニアとしての基礎力をつける

悩み:

エンジニアとしての基礎力をつける為に、基本情報技術者試験の学習を始めた。でも、いきなりn進数とか出てきて挫折しそう、、、。

信頼性:

IT業界に転職して約1年。ITエンジニアとしての基礎力をつけたいと思い、 2021年2月より基本情報技術者試験の学習を始めました。4月に受験するも不合格。そして、6月に受けた試験で合格する事ができました。

この記事では、 n進数の理解でつまづき挫折しそうになった経験から、これだけは知っていればn進数は大丈夫!と言うのを書いています。

この記事を読むとできるようになる事:

  • n進数とはどのようなものか理解出来る
  • 2進数から10進数、10進数から2進数への変換ができる

基本情報技術者試験が求めているもの以下の2点ではないかと思っています。

  • n進数知っていますか?
  • 基数変換できるようになってください

 

それでは、この2点を軸に見ていきましょう!

n進数って何?

そもそも、n進数って何でしょう?

一つずつ理解を深めて行きましょう。

n進数とは?

n進数を一言でいうと、

「この世の数字はn個の数字によって表現されている。」

と言えます。

nってな何?

n進数の「n」って何?と思った方。

先ほど、「n個の数字、、、」とあったことから、nには数字が入ります。

ここでは、nには数字が入るんだな・・・ぐらいに思ってください。

そして、

nに2を入れれば、「2進数」。

nに10を入れれば、「10進数」となります。

さらに、

「この世の数字はn個の数字によって表現、、、」とあるように、例えば、2進数であれば、

「この世の数字は、0と1の2個の数字によって表現されています。」と言えます。

10進数の世界

理解の為に、普段私たちが使っている10進数で考えてみましょう。

10進数の世界では、

「この世の数字は0~9の10個の数字によって表現されている。」と言えます。

0、1、2、3、4、5、6、7、8、9、という数字を使っています。これ以外で数字を使っていますでしょうか?

どんなに大きい数字も、この10個の数字を組み合わせて使っているはずです。

例えば、

富士山の高さ 3,776 m、

JR東京駅・JR新大阪駅間 552.6km

日本の面積 378,000 ㎢

円周率 3.1415926535…

これが、 10個の数字で表現された世界、つまり10進数の世界と言えます。

2進数の世界

2進数について見てましょう。

2進数の世界では、

「この世の数字は、0と1の2個の数字によって表現されている。」

つまり、

0と1以外の数字は出てきません。

どんなに大きな数字も0と1で表現されます。

基本情報技術者試験で押さえておくべきn進数

試験上、押さえておくべきn進数は、

  • 「2進数」
  • 「8進数」
  • 「10進数」
  • 「16進数」

の4つです。

「n進数」と聞いてビビッてしまう人は、まずは見ている世界が違うということを理解しましょう。

2進数であれば、この世界の数字は、0と1で表現されている。

8進数であれば、この世界の数字は、0,1,2,3,4,5,6,7で表現さている。

10進数であれば、この世界の数字は、0,1,2,3,4,5,6,7,8,9で表現されている。

16進数であれば、この世界の数字は、0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fで表現されている。

といった感じです。

※この記事では、n進数の理解の為に、2進数と10進数を扱います。

8進数と16進数については、別の記事で扱う予定です。

  • n進数の「n」には数字が入る。
  • n進数の理解とは、「見ている世界が違う」と理解する事
  • 2進数とはこの世の数字を0と1の2個の数字で表現された世界
  • 10進数とは、この世の数字を0〜9の10個の数字で表現された世界

桁上がり

ここで、桁上がり(けたあがり)について押さえておきましょう!

「桁上がりは少ない数の数字で大きな数字を表現できるとても便利なもの。」

これだけ聞いても分かりにくいと思いますので、まずは10進数で考えてみましょう。 (10進数はこの世の数字を0~9の10個の数字で表現するのでしたね。)

普段私たちは、大きな数字を表現するときに、一の位、十の位、百の位、千の位、、、と「位(桁)」という概念を持ち出して大きな数字を表現しています。

10進数であれば、一の位は、0~9となり、9の次は十の位が出現します。

一の位 0→1→2→3→4→5→6→7→8→9 → 十の位出現
十の位と一の位 10→11→12→13→14→15→中略→98→99 → 百の位の出現
百の位と十の位と一の位 100→101→103→中略→998→999→ 千の位の出現 1000~9999…

と、各位(桁)が最大数字の9まで来たら次の位(桁)が出現します。

これを「桁上がり」といいます。

こうして大きい数字を表現しています。

桁上がりとは、「すくない数の数字(10進数であれば0~9の10個)で大きな数字(位(桁)という概念で)を表現できるとても便利なもの」

2進数の桁上がり

それでは、2進数で考えてみましょう。

2進数は、0と1の2つの数字で表現するのでしたね。

そのため、2進数の世界では最大数字は「1」となります。

一桁目 0→1 → 二桁目の出現(桁上がり)
二桁目と一桁目 10→11 → 三桁目の出現(桁上がり)
三桁目と二桁目と一桁目 100→101→110→111 → 四桁目の出現(桁上がり) 1000,1001,~…

と、各桁が最大数字の「1」まで来たら次の桁が出現します。

10進数と2進数を比べてみましょう

10進数 2進数
0
1
2
3
4
5
6
7
8
9
10(桁上がり)
0
1
10(桁上がり)
11
100(桁上がり)
101
110
111
1000(桁上がり)
1001
1010

2進数では、0と1しか数字を表現できない為、10進数の2以上の概念がありません。

そのため、2進数の世界では各桁が最大数字の1となったら桁上がりしているのが分かります。

2進数から10進数、10進数から2進数にしよう(基数変換)

ここでは、2進数を10進数に、10進数を2進数に変換する方法をお伝えします。

このような変換を「基数変換」といいます。

基数とは

基数とは、基本となる数字です。

n進数の「n」にあたる部分です。

2進数であれば「2」。

10進数であれば「10」。

そして、この基数を変換するから基数変換なのです。

つまり、見えている世界を切り替えましょう、と言っています。

基数変換を習得する3つの手順

それでは、基数変換を行っていきましょう。

流れは、次の3ステップです。

  1. 整数部と小数部を分ける
  2. 10進数から2進数へのパターン、2進数から10進数へのパターンがあることを理解する
  3. 全部で4つのパターンを押さえ、紙とペンを用意し手を動かす

1.整数部と小数部に分ける

まずは、数字を整数部と小数部に分けます。

整数部とは、小数点の左側。

小数部とは、小数点の右側です。

例えば、552.6の場合。

整数部は、552。小数部は、 0.6です。

2. 10進数から2進数へのパターン、2進数から10進数へのパターンがあることを理解する

整数部と小数部に分けたら、それぞれに、 10進数から2進数へのパターン、2進数から10進数へのパターンを適用しましょう。

これを、まとめると以下のマトリクスになります。

整数部 小数部
10進数から2進数
2進数から10進数

パターンは全部で4つ。

それでは、実際に①〜④の順で例題を基数変換していきましょう。

ここでは、例題として、10進数では、「10.125」、2進数では、「1010.001」を使って行きます。

2つとも同じ数字を指しています。

①整数部を10進数から2進数へ

10進数の整数部「10」を2進数に変換してみましょう。

1、整数部を2で割り、商と余を算出します。
(2で割るのは、2進数だからです。)

10 ÷ 2 = 5(商)・・・0(余)

2、算出した商をさらに2で割って行きます。
(この場合、5をさらに2で割ります。)

10 ÷ 2 = 5・・・0
5 ÷ 2 = 2・・・1

3、2を繰り返し、商が0になるまで行います。

10 ÷ 2 = 5 ・・・0
5 ÷ 2 = 2 ・・・ 1
2 ÷ 2 = 1 ・・・ 0
1 ÷ 2 = 0 ・・・ 1
(ここで、商が0となりました。計算終了です。)

4、余を下から並べたら、2進数の出来上がりです。

10 ÷ 2 = 5・・・0 ↑
5 ÷ 2 = 2 ・・・1 ↑
2 ÷ 2 = 1・・・ 0 ↑
1 ÷ 2 = 0・・・ 1 ↑

= 1010

②小数部を10進数から2進数に変換する

10進数の小数部「0.125」を2進数に変換してみましょう。

1、小数部に2を掛け算します。
(2を掛けるのは2進数だからです)

0.125 × 2 = 0.25

2、1で算出した答えの整数部と小数部の内、整数部をメモし、小数部に2を掛けます。

0.125 × 2 = 0.25・・・整数部→0
0.25 × 2 = 0.5 ・・・ 整数部→0

3、2を繰り返し、小数部が0になるまで行います。

0.125 × 2 = 0.25・・・整数部→ 0
0.25 × 2 = 0.5 ・・・ 整数部→ 0
0.5 × 2 = 1.0 ・・・ 整数部→ 1
(小数部が0となったので、ここで終了です。)

4、メモした整数部の値を上から順番に並べたら、小数部における2進数の出来上がりです。

0.125 × 2 = 0.25・・・整数部→ 0 ↓
0.25 × 2 = 0.5 ・・・ 整数部→ 0 ↓
0.5 × 2 = 1.0 ・・・ 整数部→ 1 ↓

0. 0 0 1

となります。

③整数部を2進数から10進数に変換する。

2進数の整数部、「1010」を10進数に変換してみましょう。

1、整数部「1010」の各桁に2nを掛けます。
nは、0からスタートし、各桁が上がるごとに1ずつ増やして行きます。

1  0  1  0
×  ×  ×  ×
23 22 21 20

2、ここで2nを変換してみましょう。

20 = 1 (どんな数字に0乗を掛けても、「1」となると覚えておきましょう)
21 = 2
22 = 4
23 = 8

3、計算結果を全て足し合わせたら10進数の出来上がりです。

1  0  1  0
×  ×  ×  ×
8  4  2  1
||  ||  ||  ||
8 + 0 + 2 + 0 =  10

④小数部を2進数から10進数に変換する。

2進数の小数部「0.001」を10進数に変換してみましょう。

1、小数部「001」の各桁に1/2nを掛けます。
nは、1からスタートし、各桁が下がるごとに1ずつ増やして行きます。

0 . 0   0   1
    ×   ×   ×
   1/21 1/22 1/23

2、ここで、1/2n を変換してみましょう

1/21 = 1/2 = 1 ÷ 2 =  0.5
1/22 = 1/4 = 1 ÷ 4 = 0.25
1/23 = 1/8 = 1 ÷ 8 = 0.125

3、計算結果を全て足し合わせたら10進数の出来上がりです

0 .  0   0   1
    ×   ×   ×
   0.5 0.25 0.125
    ||   ||   ||
    0 + 0 + 0.125 = 0.125

3. 全部で4つのパターンを押え、紙とペンを用意し手を動かす

基数変換には4つのパターンがあることを知ったところで、実際に紙とペンを用意し、手を動かしてみましょう。

何度かやれば、基数変換はきっとあなたのものになります。もう、怖くありません。

慣れてきたら、数字を変えてやってみてください。

最後に

ここまで読んでいただきありがとうございます。

n進数はなかなかとっつきにくく、わかりにくいと思います(慣れてないですからね・・・)。

大事なのは、一回で理解しようとせず、何度も読んで理解し、基数変換の際は実際に手を動かしてみることかなと思います。

最低3回は読み返すことをおすすめします。

そして、基数変換の際は、実際に紙とペンを用意してご自身の手で書いてみることをおすすめします。

こちらも、 3回ほどやれば慣れると思います。

新しいことを始めるときは誰でもわからない事だらけです。

だから、一回で全てを理解しようとせず、繰り返しが大事です。

1回目で分からないことも、2回、3回と何度も同じ物を読んでいくうちに分かるようになるものです。

この記事が参考になったらとても嬉しいです。また次の記事でお会いしましょう!