平成22年度春期 応用情報技術者試験 午前 問5
流れ図は,シフト演算と加算の繰返しによって2進整数の乗算を行う手順を表したものである。この流れ図中のa,bの組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの16ビットで表される。X,Y,Zは32ビットのレジスタであり,けた送りには論理シフトを用いる。最下位ビットを第0ビットと記す。

- ア 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ビット左シフト
解答・解説を見る
正解:ア
AI解説
2進整数の乗算をシフトと加算の繰返しで実現する典型的なアルゴリズムでは、乗数(Y)の最下位ビット(第0ビット)を調べて1ならば被乗数(X)を部分積として加算し、その後Xを1ビット左シフト、Yを1ビット右シフトして次のビットの判定に備える処理を乗数のビット数分繰り返す。したがって正解はアである。 ア: a:Yの第0ビットを判定し、b:Xを1ビット左シフト、Yを1ビット右シフトする組合せ。乗算のシフト加算アルゴリズムの標準的な処理手順に一致する。これが正解。 イ: シフトの方向(Xを右シフト、Yを左シフト)が逆になっており、部分積の桁合わせが正しく行われない。 ウ: 判定するビット位置が第15ビット(最上位側)になっており、下位ビットから処理する一般的なアルゴリズムと異なる。 エ: 判定ビット位置とシフト方向の両方が標準的なアルゴリズムと異なる組合せ。 💡 シフト加算による乗算は「乗数の最下位ビットから順に判定→被乗数を左シフトしながら加算→乗数を右シフトして次のビットへ」という流れを図と対応させて覚える。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。