次の流れ図は,シフト演算と加算の繰返しによって2進整数の乗算を行う手順を表したものである。この流れ図中のa,bの組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの16ビットで表される。X,Y,Zは32ビットのレジスタであり,桁送りには論理シフトを用いる。最下位ビットを第0ビットと記す。

シフト乗算は乗数の最下位を見てXを左・Yを右へずらす

頻出基本情報技術者試験2017年度 春期 午前5/アルゴリズムとプログラミング / アルゴリズム

流れ図。開始→処理「被乗数→X,乗数→Y,0→Z,1→i」→ループ先頭→分岐(a:1,等しければ下の(Z+X)→Zへ,等しくなければ(Z+X)→Zを飛ばしてbへ合流)→処理(Z+X)→Z→処理b→処理(i+1)→i→分岐(i:16,i≦16ならループ先頭へ戻る,i>16ならZを出力して終了)。設問のa,bには表に示す4通りの組合せが入る。
流れ図。開始→処理「被乗数→X,乗数→Y,0→Z,1→i」→ループ先頭→分岐(a:1,等しければ下の(Z+X)→Zへ,等しくなければ(Z+X)→Zを飛ばしてbへ合流)→処理(Z+X)→Z→処理b→処理(i+1)→i→分岐(i:16,i≦16ならループ先頭へ戻る,i>16ならZを出力して終了)。設問のa,bには表に示す4通りの組合せが入る。

選択肢

正解と解説

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

筆算による2進乗算と同じ考え方で、乗数Yの下位ビットから順に見て、その位が1なら被乗数Xを部分積Zに加えます。判定するのは毎回Yの最下位である第0ビットなので、1回のループごとにYを右へ1ビットずらして次の位を最下位に持ってきます。同時に、桁が1つ上がった重みに合わせるためXは左へ1ビットずらします。

選択肢ごとの解説

出典:平成29年度 春期 基本情報技術者試験 午前 問5(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。