アルゴリズムとプログラミング
基本情報技術者試験 科目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 を出力する
→ 終了
選択肢表:
| a | b | |
|---|---|---|
| ア | 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 回(公開問題での観測値)