次の流れ図は、シフト演算と加算の繰返しによって2進数の乗算を行う手順を表したものである。
この流れ図中のa、bの処理の組合せとして、正しいものはどれか。
ここで、乗数と被乗数は符号なしの16ビットで表される。
X、Y、Zは32ビットのレジスタであり、けた送りには論理シフトを用いる。
a | b | |
ア | Yの最下位ビット | Xを1ビット左シフト、Yを1ビット右シフト |
イ | Yの最下位ビット | Xを1ビット右シフト、Yを1ビット左シフト |
ウ | Yの最上位ビット | Xを1ビット左シフト、Yを1ビット右シフト |
エ | Yの最上位ビット | Xを1ビット右シフト、Yを1ビット左シフト |
答え ア
【解説】
X=1010、Y=1101の時のX×Yは
1010
×1101
──────
1010
0
1010
1010
──────
10000010
になります。
これは、
(1010×1)+(1010×100)+(1010×1000)
=1010+101000+1010000
=10000010
なので、Yは右にシフトしながら最下位のビットを見ていることがわかります。
また、Xは左シフトしていることがわかります。
【キーワード】
・シフト演算