次の流れ図は、シフト演算と加算の繰り返しによって2進数の乗算を行う手段を表したものである。
この流れ図の中のa、bの処理の組合せとして、正しいものはどれか。
ここで、乗数と被乗数は符号なしの16ビットで表される。
X、Y、Zは32ビットのレジスタであり、けた送りには論理シフトを用いる。
最下位ビットを第ビットを記す。
a | b | |
ア | Yの第0ビット | Xを1ビット左シフト、Yを1ビット右シフト |
イ | Yの第0ビット | Xを1ビット右シフト、Yを1ビット左シフト |
ウ | Yの第15ビット | Xを1ビット左シフト、Yを1ビット右シフト |
エ | Yの第15ビット | Xを1ビット右シフト、Yを1ビット左シフト |
答え ア
【解説】
例として、被乗数を3(11)と乗数を5(101)として計算を行う。
まず、終了の前の出力処理で「Zを出力」となっているので、乗算の結果はZに格納するのがわかる。
空欄aの次の処理で、Z+X → Zとなっていて、空欄bではXとYの操作しかないので、空欄aには『Yの第0ビット』が1かを見ているのがわかる。すなわち、Z=11になる。
次には、Xの値を1100にして、Z(11)に加える処理が行いたいので、空欄bには『Xを1ビット左シフト、Yを1ビット右シフト』であることがわかる。
【キーワード】
・2進数の乗算