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

選択肢
- ア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: Yの第0ビット/b: Xを1ビット左シフト,Yを1ビット右シフト
筆算による2進乗算と同じ考え方で、乗数Yの下位ビットから順に見て、その位が1なら被乗数Xを部分積Zに加えます。判定するのは毎回Yの最下位である第0ビットなので、1回のループごとにYを右へ1ビットずらして次の位を最下位に持ってきます。同時に、桁が1つ上がった重みに合わせるためXは左へ1ビットずらします。
選択肢ごとの解説
- ア正解。Yの第0ビットで加算を判定し、XをL1ビット左、Yを1ビット右へずらす。
- イシフト方向が逆で、桁の重みと判定位置の対応が崩れる。
- ウ第15ビットを見るなら上位から処理することになり、シフト方向と噛み合わない。
- エ判定位置もシフト方向も筆算の手順と一致しない。
同じ分野の他の問題
- 次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。…2026年度 公開問題 科目B 問5
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数func1に与…2026年度 公開問題 科目B 問3
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数complementは、引数として渡された8ビット型…2026年度 公開問題 科目B 問2
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 次のプログラムは、…2026年度 公開問題 科目B 問1
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数changeは、10より大きい整数を引数nで受け取り…2025年度 公開問題 科目B 問2
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。