アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20140727 実施分 問6

流れ図は,シフト演算と加算の繰返しによって 2 進整数の乗算を行う手順を表したものである。この流れ図中の a,b の組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの 16 ビットで表される。X,Y,Z は 32 ビットのレジスタであり,桁送りには論理シフトを用いる。最下位ビットを第 0 ビットと記す。
流れ図: 開始 → [被乗数 → X / 乗数 → Y / 0 → Z / 1 → i] → ループ先頭 → 判定 [a] : 1(= の場合は下の処理へ,≠ の場合は処理をスキップ) → [Z + X → Z](a : 1 が = のときのみ実行) → [b] → [i + 1 → i] → 判定 i : 16(≦ ならループ先頭へ戻る,> なら下へ) → Z を出力する → 終了 選択肢表:
ab
アY の第 0 ビットX を 1 ビット左シフト,Y を 1 ビット右シフト
イY の第 0 ビットX を 1 ビット右シフト,Y を 1 ビット左シフト
ウY の第 15 ビットX を 1 ビット左シフト,Y を 1 ビット右シフト
エY の第 15 ビットX を 1 ビット右シフト,Y を 1 ビット左シフト
  • ア a: Y の第 0 ビット / b: X を 1 ビット左シフト,Y を 1 ビット右シフト
  • イ a: Y の第 0 ビット / b: X を 1 ビット右シフト,Y を 1 ビット左シフト
  • ウ a: Y の第 15 ビット / b: X を 1 ビット左シフト,Y を 1 ビット右シフト
  • エ a: Y の第 15 ビット / b: X を 1 ビット右シフト,Y を 1 ビット左シフト

出典:基本情報技術者試験 科目A免除 修了試験 20140727 実施分 問6

答えと解説を見る

正解:ア

覚える知識

シフト演算と加算による2進乗算の流れ図読解

2進乗算は、乗数の最下位ビットが1のとき被乗数を加算し、被乗数を左・乗数を右へシフトする操作の繰返しで行う。

この問題で必要なこと

乗数の最下位ビット(第0ビット)が1ならZにXを加算し、Xを左、Yを右へ1ビットシフトして次の桁を見る。これを16回繰り返す。

ひっかけ

最上位ビット(第15ビット)を見る方式や、シフト方向を逆にした選択肢を選ばせる。

この知識の出題:本試験系 1 回・免除試験 1 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「数値を扱うアルゴリズムと計算問題」で学ぶ

同じ知識の過去問