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

出典:平成22年度 春期 応用情報技術者試験 午前 問5
- ア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ビット左シフト
正解:ア
解説
この流れ図は,乗数Yの最下位ビット(第0ビット)を調べて1ならば被乗数Xを積Zに加算し,その後Xを1ビット左シフトしてけたを上げ,Yを1ビット右シフトして次に調べるビットを最下位に移すという操作を,iが16になるまで繰り返す筆算式の乗算アルゴリズムです。
選択肢ごとの解説
- ア正しい。Yの第0ビットを判定し,Xを左シフトしてけたを上げ,Yを右シフトして次のビットを最下位に送るという手順は,2進数の筆算による乗算の仕組みと一致します。
- イ誤り。Xを右シフト,Yを左シフトすると,けたの重みが逆方向にずれてしまい,正しい積が得られません。
- ウ誤り。Yの第15ビットは最上位ビットであり,これを先に判定すると乗数の下位ビットから処理する手順と矛盾します。
- エ誤り。aとbの判定・シフト方向がいずれも誤っており,正しい乗算結果を得られません。