2進数と基数変換|基本情報技術者試験の過去問対策

目次

まずは過去問を見てみよう

過去問①:10進数から2進数への変換

平成16年度 春期 基本情報技術者試験 午前 問1

過去問②:16進小数から10進数への変換

平成19年度 秋期 基本情報技術者試験 午前 問1

過去問③:有限小数の判定

平成17年度 秋期 基本情報技術者試験 午前 問1

過去問④:2進数で最大値を求める

平成18年度 秋期 基本情報技術者試験 午前 問1

この問題を解くために必要なキーワード

今回の過去問を解くために必要なのは、次の4つです。

① n進数と位取り
② 基数変換
③ 有限小数と無限小数
④ ビットと桁の重み

この4つを理解すれば、冒頭の過去問を解けるようになります。

1. n進数と位取り

n進数とは?

n進数とは、n種類の数字を使って数を表す方法です。

進数使用する数字桁が上がるタイミング
2進数0、12になったとき
8進数0~78になったとき
10進数0~910になったとき
16進数0~9、A~F16になったとき

16進数では、10~15をA~Fで表します。

10進数16進数
10A
11B
12C
13D
14E
15F

位取りとは?

位取りとは、数字が置かれている桁によって、その数字の価値が変わる仕組みです。

例えば、10進数の123は次のように分解できます。

123 = 1 × 100 + 2 × 10 + 3 × 1

これを累乗で表すと、

123 = 1 × 10² + 2 × 10¹ + 3 × 10⁰

となります。

2進数でも同じ考え方です。

桁4桁目3桁目2桁目1桁目
2進数の重み8421
10進数の重み1000100101
16進数の重み4096256161

つまり、n進数では、右から順番にn⁰、n¹、n²、n³…という重みが付きます。

※累乗が分からない場合は、別記事「累乗とは?」を参照してください。

小数点以下の位取り

小数点以下では、桁が右に進むほど重みが小さくなります。

小数点以下1桁目2桁目3桁目4桁目
2進数1/21/41/81/16
10進数1/101/1001/10001/10000
16進数1/161/2561/40961/65536

試験で覚えるポイント

  • 整数部分:左に進むほど重みがn倍になる
  • 小数部分:右に進むほど重みが1/n倍になる
  • n進数の各桁の重みはnの累乗で表せる

2. 基数変換

基数変換とは、数値を別の進数で表すことです。

試験では、主に次の4パターンが出題されます。

  • n進数の整数 → 10進数
  • 10進数の整数 → n進数
  • n進数の小数 → 10進数
  • 10進数の小数 → n進数

n進数の整数を10進数に変換する

各桁の数字に重みを掛けて足します。

例えば、2進数の1011は、

1011 = 1 × 8 + 0 × 4 + 1 × 2 + 1 × 1

= 8 + 2 + 1

= 11(10進数)

となります。

16進数の2Aなら、

2 × 16 + 10 × 1

= 42(10進数)

です。

10進数の整数をn進数に変換する

変換したい進数の基数で割り続け、余りを下から読みます。

例えば、10進数の13を2進数に変換します。

計算商余り
13 ÷ 261
6 ÷ 230
3 ÷ 211
1 ÷ 201

余りを下から読むと1101です。

したがって、

13(10進数)= 1101(2進数)

となります。

8進数なら8で、16進数なら16で割り続けます。

n進数の小数を10進数に変換する

小数点以下の各桁に重みを掛けて足します。

例えば、2進数の0.101は、

1 × 1/2 + 0 × 1/4 + 1 × 1/8

= 0.5 + 0.125

= 0.625(10進数)

となります。

16進数の0.Cなら、Cは12なので、

12 × 1/16

= 0.75(10進数)

です。

整数部分と小数部分が混在する場合も同じです。

例えば、16進数の3A.5Cは、

3 × 16 + 10 × 1 + 5 × 1/16 + 12 × 1/256

= 58 + 5/16 + 12/256

= 3735/64(10進数)

となります。

10進数の小数をn進数に変換する

変換したい進数の基数を掛け続け、整数部分を上から読みます。

例えば、10進数の0.625を2進数に変換します。

計算整数部分次に計算する小数部分
0.625 × 2 = 1.2510.25
0.25 × 2 = 0.500.5
0.5 × 2 = 1.010

整数部分を上から読むと101です。

したがって、

0.625(10進数)= 0.101(2進数)

となります。

小数部分が0になれば変換は終了です。0にならずに続く場合は、必要な桁数まで計算します。

2進数と8進数・16進数の変換

2進数と8進数・16進数は、桁をまとめることで簡単に変換できます。

  • 2進数3桁 = 8進数1桁
  • 2進数4桁 = 16進数1桁

例えば、

10101100(2進数)

を4桁ずつ区切ると、

1010|1100

となります。

1010は16進数のA、1100は16進数のCなので、

10101100(2進数)= AC(16進数)

です。

整数部分は小数点から左に、小数部分は小数点から右に区切ります。桁数が足りない場合は、値が変わらないように0を補います。

試験で覚えるポイント

変換方法
n進数 → 10進数各桁の重みを掛けて足す
10進数の整数 → n進数nで割り、余りを下から読む
10進数の小数 → n進数nを掛け、整数部分を上から読む
2進数 → 8進数3桁ずつ区切る
2進数 → 16進数4桁ずつ区切る

3. 有限小数と無限小数

有限小数とは?

有限小数とは、小数点以下が途中で終わる数です。

例えば、10進数の0.5や0.125は有限小数です。

一方、1/3を10進数で表すと、

0.333333…

となり、終わりません。これを無限小数といいます。

有限小数になる条件

分数を約分したとき、分母の素因数が、基数の素因数だけで構成されていれば有限小数になります。

試験では次の表を覚えておきましょう。

進数有限小数になる条件(約分後の分母)
2進数素因数が2だけ
8進数素因数が2だけ
10進数素因数が2と5だけ
16進数素因数が2だけ

例えば、0.125は1/8です。

8 = 2³なので、2進数でも有限小数になります。

一方、0.05は1/20です。

20 = 2² × 5

分母に5が含まれているため、2進数では有限小数になりません。

※素因数分解が分からない場合は、別記事「素因数分解とは?」を参照してください。

試験で覚えるポイント

  • 2進数・8進数・16進数では、約分後の分母に2以外の素因数があると無限小数になる
  • 10進数では、約分後の分母の素因数が2と5だけなら有限小数になる
  • 10進数で有限小数でも、2進数では無限小数になることがある
  • 2進数で有限小数なら、10進数でも有限小数になる

4. ビットと桁の重み

ビットとは?

ビットとは、0または1のどちらかを表す情報の単位です。

1バイトは8ビットです。

例えば、次の8ビットを考えます。

10110010

各桁の重みは次のとおりです。

ビット10110010
重み1286432168421

1の桁だけを足すと、

128 + 32 + 16 + 2 = 178

となります。

最大値を求めるには?

2進数で最大値を求めるときは、重みの大きい左側の桁から1を配置します。

例えば、8ビットのうち、1が4個、0が4個という条件で最大値を求める場合、

11110000

と並べます。

128 + 64 + 32 + 16 = 240

したがって、最大値は240です。

試験で覚えるポイント

  • 1バイト = 8ビット
  • 符号なし2進数では、左側の桁ほど重みが大きい
  • 1の個数が決まっている場合、左側から1を並べると最大値になる

過去問の正解と解説

冒頭の4問を解いてみましょう。

過去問①:10進数から2進数への変換

平成16年度 春期 午前 問1

正解・解説

正解:ウ(0.00111)

7/32を2進数に変換します。

32 = 2⁵なので、

7/32 = 4/32 + 2/32 + 1/32

= 1/8 + 1/16 + 1/32

= 2⁻³ + 2⁻⁴ + 2⁻⁵

となります。

小数点以下の3桁目、4桁目、5桁目が1になるので、

0.00111

が正解です。

この問題は「小数点以下の位取り」を理解していれば解けます。

過去問②:16進小数から10進数への変換

平成19年度 秋期 午前 問1

正解・解説

正解:ウ(0.75)

16進数の0.Cを10進数に変換します。

Cは10進数の12です。

12 × 1/16 = 0.75

したがって、

0.75

が正解です。

この問題は「16進数の数字」と「小数点以下の位取り」を理解していれば解けます。

過去問③:有限小数の判定

平成17年度 秋期 午前 問1

正解・解説

正解:ウ(0.5)

各選択肢を分数に直します。

選択肢小数約分した分数
ア0.33/10
イ0.42/5
ウ0.51/2
エ0.84/5

8進数で有限小数になるには、約分後の分母の素因数が2だけである必要があります。

該当するのは1/2だけです。

したがって、

ウ(0.5)

が正解です。

この問題は「有限小数になる条件」を覚えていれば解けます。

過去問④:2進数で最大値を求める

平成18年度 秋期 午前 問1

正解・解説

正解:エ(240)

1バイトは8ビットです。

0と1の個数が同じなので、それぞれ4個ずつ使用します。

最大値にするには、重みの大きい左側から1を並べます。

11110000

これを10進数に変換すると、

128 + 64 + 32 + 16 = 240

したがって、

エ(240)

が正解です。

この問題は「ビットと桁の重み」を理解していれば解けます。

まとめ

2進数と基数変換の問題では、次の4つを押さえましょう。

キーワード覚えること
n進数と位取り各桁の重みはnの累乗
基数変換整数は割り算、小数は掛け算で変換
有限小数と無限小数約分後の分母の素因数で判定
ビットと桁の重み左側ほど重みが大きく、1を左に並べると最大値になる

この4つを理解して、冒頭の過去問が解けるようになれば、このテーマの学習はひとまず完了です。

次は「2進数の計算」に進みましょう。

出典

本記事の過去問は、独立行政法人情報処理推進機構(IPA)が公開した基本情報技術者試験の問題を参考にしています。

  • 平成16年度 春期 基本情報技術者試験 午前 問1
  • 平成19年度 秋期 基本情報技術者試験 午前 問1
  • 平成17年度 秋期 基本情報技術者試験 午前 問1
  • 平成18年度 秋期 基本情報技術者試験 午前 問1

IPA公式過去問題一覧:https://www.ipa.go.jp/shiken/mondai-kaiotu/

※上記4年度の公式問題PDF・解答PDFへの直接リンクは未確認のため、公開前に追加すること。

よかったらシェアしてね!
目次