平成18年 春期 基本情報技術者 午前 問15

次の流れ図は、シフト演算と加算の繰返しによって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は左シフトしていることがわかります。


キーワード
・シフト演算

キーワードの解説
  • シフト演算
    数のパターンを左や右にけたをずらす演算処理です。
    左にずらす処理(けたが上がっていく処理)を左シフト(“1”−(1けた左シフト)→“10”)、
    右にずらす処理(けたが下がっていく処理)を右シフト(“10”−(1けた右シフト)→“1”)といいます。

もっと、「シフト演算」について調べてみよう。

戻る 一覧へ 次へ