問3


【平成11年春期の問題より】

問3 英字の大文字(A〜Z)と数字(0〜9)を同一のビット数で一意に
コード化するには、少なくとも何ビット必要か。

ア 5  イ 6  ウ 7  エ 8
----------------------------------------------------------------------
【正解】イ
----------------------------------------------------------------------
【解法】
 種明かしをしてしまうと何でもない問題なのだが、問題文の意味がとりにくく
困惑させられる。愚問である。

 この問題で出題者が意図しているのは、次のような思考の流れをとれるか
どうかのチェックである。(^はべき乗を表す。)

  英字の大文字(A〜Z) → 26個
  数字(0〜9)     → 10個

  合計 → 36個

 ビット数 表現できる個数
    5 2^5=2×2×2×2×2      = 32 
    6 2^6=2×2×2×2×2×2    = 64 
    7 2^7=2×2×2×2×2×2×2  =128
    8 2^8=2×2×2×2×2×2×2×2=256

 以上より、4ビットでは32個までしか表せないので合計36個の文字を
「同一のビット数で一意にコード化する」ことはできないが、5ビットあれば
十分である。
 よって少なくとも5ビットは必要なので正解はイとなる。

 問題文の表現に惑わされるとひどく難問に思えるが実態は易しい。
----------------------------------------------------------------------
【過去5回の中の類題 その1】
(平成10年秋期 問5)
 32ビットで表現できるビットパターンの個数は,24ビットで表現できる
個数の何倍か。

 ア 8  イ 16  ウ 128  エ 256

【正解】エ
【解法】
 32ビットで表現できるビットパターンは 2^32(=2の32乗)
 24ビットで表現できるビットパターンは 2^24(=2の32乗)
であるから、
 2^32/2^24=2^(32−24)=2^8=256
より、エの256倍が正解になる。

 以下、蛇足。
 読者の中にビットパターンという言葉の意味するところを理解していない
人がいるかも知れないので補足しておく。(知っている人はとばしてよい。)
 ビットパターンというのは、0または1の数値の列である。
例えば、4ビットのビットパターンは次の16通りになる。
  0000  0001  0010  0011
  0100  0101  0110  0111
  1000  1001  1010  1011
  1100  1101  1110  1111
----------------------------------------------------------------------
【過去5回の中の類題 その2】
(平成10年春期 問10)

 7ビットの文字コードにパリティビットを付加し,パリティビットを
含めた8ビット中の1の個数が偶数になるようにする。
パリティビットは7ビットの文字コードの上位に配置する。
このとき、16進数で4Fと表される文字コードにパリティビットを付加した
コードを16進数で表したものはどれか。

 ア 4F  イ 9F  ウ CF  エ F4

【正解】ウ
【解法】
 まず、16進数の4Fを2進数のビットパターンに変換する。16進の4は
2進の100で16進のFは10進の15であるから1111となる。
 10進←→16進←→2進の変換については0〜16まできちんと覚えて
おく必要がある。

 10進 16進  2進
 ─── ─── ─────
  0   0      0
  1   1      1
  2   2     10
  3   3     11
  4   4    100
  5   5    101
  6   6    110
  7   7    111
  8   8   1000
  9   9   1001
 10   A   1010
 11   B   1011
 12   C   1100
 13   D   1101
 14   E   1110
 15   F   1111
 16  10  10000

さて、したがって16進の4Fは2進では
    1001111
と表される。パリティビットを付加して1の個数を偶数にする必要がある。
今「1」の個数は5個だから、パリティビットは1であり、それが文字コード
の上位に来るわけだから、
   11001111
   ↑
   パリティビット
となる。これを16進に直すと2進の1100は10進数の12だから16進
のCとなる。また2進の1111は10進数の15だから16進のFとなる。
よって、16進ではCFとなり、正解はウとなる。
----------------------------------------------------------------------
【傾向と対策】
 ビット処理全般の出題状況については問1で示した。
 ここでは「シフト」「2の補数」「浮動小数点数」の3大出題領域以外の
問題の出題状況について示す。

平成11年春期 問 3 その他 コード化       <本文>
平成10年秋期 問 5 その他 ビットパターンの個数 <類題>
平成10年春期 問10 その他 パリティビット    <類題>
平成 9年秋期 出題なし
平成 9年春期 問 3 その他 桁あふれ
        問 4 その他 記号列の個数
平成 8年秋期 問 6 その他 固定小数点数
        問27 その他 2進化10進数

 本問と類題2問をみてもらえれば分かる通り、「問題文はわかりにくいが
易しい」といった問題ばかりである。試験対策の上では、過去問の出題傾向は
あまり気にする必要はなく、むしろ基本的な知識をきちんとおさえ、この種の
変化球に対応できる応用力をつけておくことが肝要である。
 知識詰め込み偏重の傾向のある情報処理技術者試験の中でこうした傾向の
問題が出題されること自体は望ましいが、本問は表現が悪すぎる。
----------------------------------------------------------------------
【コラム】 「マガジンの難易度」
 部数は順調に増加してはいるが、購読を解除する読者も当然いる。その中で
比較的多いのが、「内容が難しすぎる」というものである。
 「難しい」という時には2通りの意味がある。一つは「問題」そのものが
難しいというものであり、もう一つは「解説」が難しいというものである。
 前者に関しては、何ら手のうちようがない。試験問題の水準が厳然として
ある以上、出題内容が理解できなければ受験以前の話である。高校や大学の
入試がそうであるように試験問題にあたるというのは、ある程度勉強をした
後の話である。時に教科書レベルの話を解説の中に述べることもあるが、それ
は参考書や教科書の記述に難があると思われるための補足であり、本質的には
教科書の代わりになることは意図していない。
 後者は執筆者側の課題である。できる限りわかりやすく書くように心掛けて
はいるが、問題によってはまだまだかとも思う。と同時に、わかりやすさを
追求するあまり冗長な表現は避けねばならない。難しいところである。