平成22年度 高度共通 午前I(PM試験) 問2
流れ図は,シフト演算と加算の繰返しによって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解説
この流れ図は10進の筆算と同じ原理で2進乗算を行う。乗数Yの最下位ビット(第0ビット)を調べ,1なら被乗数XをZ(積)に加算する。次のけたの処理に移るため,Xは1ビット左シフトして2倍し(けた上げに相当),Yは1ビット右シフトして次に判定するビットを第0ビットの位置に移す。これを16回繰り返すと積が得られる。よってaは「Yの第0ビット」,bは「Xを左シフト,Yを右シフト」の組合せが適切である。 ア: 正解。最下位ビットで加算を判定し,被乗数を左へ,乗数を右へシフトする標準的な2進乗算の手順である。 イ: シフト方向が逆である。Xを右シフトすると被乗数が2倍ではなく1/2になってしまい,正しい積が得られない。 ウ: 判定ビットが第15ビットでは,Yの右シフトと組み合わせたとき乗数の各ビットを正しい順に判定できない。 エ: 判定ビットとシフト方向の組合せがともに不適切である。 💡 「最下位ビットで判定→当たれば加算→Xを左シフト・Yを右シフト」が2進乗算の基本形。10進の筆算で部分積をけたをずらしながら足すイメージに対応させると覚えやすい。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。