本文へスキップ

平成21年度 春期 ITパスポート試験 問64

この問題の解説と、これまでの解答の記録です。

問64
頻出度★★☆

2進数 10110 を3倍したものはどれか。

出典 平成21年度 春期 ITパスポート試験 問64
解説

問 64

  • 不正解ア

    111010 は10進数で 32+16+8+2 = 58 であり、66 ではない。これは 101100 (22の2倍) と 10110 (もとの22) を足すときに、桁上がり (キャリー) をまったく処理せず各桁を独立に足してしまった場合の値である。2進数の加算では 1+1 は 0 として書き、上の桁へ 1 を繰り上げる必要があり、この繰り上げを落とすと値が小さくなる。また 6桁の2進数が表せるのは最大 111111 = 63 までで 66 に届かないため、桁数を見るだけでも候補から外せる。

  • 不正解イ

    111110 は10進数で 32+16+8+4+2 = 62 であり、66 ではない。これは 101100 と 10110 の各桁を論理和 (OR) でつないだ結果に等しく、加算ではなく「どちらかが 1 なら 1 にする」というビット演算をしてしまった場合の値である。加算と論理和は別の演算であり、混同してはいけない。この選択肢も 6桁なので最大 63 までしか表せず、66 にはなり得ない。

  • ウ

    正解 正解は ウ。まず 2進数 10110 を10進数に直す。各桁の重みは右から 1・2・4・8・16 なので、10110 = 16+0+4+2+0 = 22 である。これを3倍すると 22×3 = 66。66 を2進数に戻すには大きい重みから引いていけばよく、66 = 64+2 なので、64 の桁と 2 の桁だけが 1 となり 1000010 が得られる。これは選択肢 ウ と一致する。2進数のまま計算する方法もある。2進数では1桁左へシフトすると値が2倍になるので、3倍は「2倍したもの + もとの数」と分解できる。10110 を1桁左シフトして 101100 (=44) を作り、これにもとの 10110 (=22) を足すと、桁上がりを正しく処理して 1000010 (=66) となり、やはり ウ になる。なお、22×3=66 は 64 以上 128 未満なので答えは必ず7桁の2進数になる、という桁数の見積もりだけでも ウ に絞り込める。

  • 不正解エ

    10110000 はもとの 10110 の右側に 0 を3つ付け足した形で、10進数では 128+32+16 = 176 である。2進数で末尾に 0 を1つ足すと値は2倍になるので、0 を3つ足すことは 2の3乗 = 8倍することを意味し、22×8 = 176 となる。つまりこれは3倍ではなく8倍であり、「3倍」と「3桁 (3ビット) 左シフト」を取り違えた誤りである。10進数で末尾に 0 を付けると10倍になるのと同じ理屈が、2進数では2倍になる点を押さえておきたい。

ここがポイント
  • 2進数の計算は、いったん10進数に変換して計算し、答えを2進数に戻すのが確実。各桁の重みは右から 1・2・4・8・16・32・64… と2倍ずつ増える (基数変換)。10110 = 16+4+2 = 22、22×3 = 66、66 = 64+2 = 1000010 という流れで解ける。
  • 2進数を1桁左へシフトすると値は2倍、n桁左へシフトすると2のn乗倍になる。したがって3倍は「1桁左シフトした数 + もとの数」で求められる。3倍と3桁シフト (8倍) の取り違え、および加算の桁上がりの落としが典型的な誤答パターンなので注意する。
用語

解答の記録