基本情報技術者試験 過去問解説

論理シフトとは?基本情報技術者試験 平成29年度 春期 午前 問5を解説

基本情報技術者試験 平成29年度 春期 午前 問5は、論理シフトに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。

問題文

次の流れ図は,シフト演算と加算の繰返しによって 2 進整数の乗算を行う手順を表したものである。この流れ図中の a, b の組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの 16 ビットで表される。X, Y, Z は 32 ビットのレジスタであり,桁送りには論理シフトを用いる。最下位ビットを第 0 ビットと記す。
シフト演算と加算による乗算アルゴリズムの流れ図。被乗数→X, 乗数→Y, 0→Z, 1→i で初期化。判定 [a]:1 が = ならZ←Z+X 実行、その後 [b] のシフト操作、i←i+1、i:16 で ≤ ならループ、>でZを出力

この問題の出題ポイント

  • 論理シフトの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
  • 関連タグ: CPU。

選択肢

  1. a=Y の第 0 ビット, b=X を 1 ビット左シフト, Y を 1 ビット右シフト正解
  2. a=Y の第 0 ビット, b=X を 1 ビット右シフト, Y を 1 ビット左シフト
  3. a=Y の第 15 ビット, b=X を 1 ビット左シフト, Y を 1 ビット右シフト
  4. a=Y の第 15 ビット, b=X を 1 ビット右シフト, Y を 1 ビット左シフト

正解

: a=Y の第 0 ビット, b=X を 1 ビット左シフト, Y を 1 ビット右シフト

解説

16 ビットの被乗数 Y を最下位ビット (第 0 ビット) から検査し、1 なら Z に X を加算。次のビット検査のため X を左シフト (位取りを上げる)、Y を右シフト (最下位を破棄して次のビットを露出)。アが正解。

なぜ他の選択肢が違うのか

  • ア(正解)

    Y の第 0 ビットを判定、X 左シフト/Y 右シフトでループを進める。乗算の標準実装で正解。

  • X を右シフトすると桁が下がり乗算結果が小さくなる。逆方向。

  • 第 15 ビットから検査するのは MSB から処理する方式で、流れ図と整合しない。

  • 第 15 ビット判定+X 右シフトは整合しない組合せ。

解き方の整理

論理シフトの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。

関連問題

前後の問題

平成29年度 春期 午前 の関連する問題

復習を続ける

間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。