過去問解きまくり研究所 ホーム

平成22年度 春期 午前 問5

コンピュータ構成要素

シフト演算に関する問題

流れ図は,シフト演算と加算の繰返しによって 2 進整数の乗算を行う手順を表したものである。この流れ図中の a,b の組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの 16 ビットで表される。X,Y,Z は 32 ビットのレジスタであり,けた送りには論理シフトを用いる。最下位ビットを第 0 ビットと記す。

〔流れ図〕

開始
  被乗数 → X / 乗数 → Y / 0 → Z / 1 → i
  ┌ 繰返しの先頭
  │ 判定  a : 1   …… ≠ のときは【b】まで飛ぶ
  │ = のとき  Z + X → Z
  │ 【b】
  │ i + 1 → i
  │ 判定  i : 16  …… ≦ のときは繰返しの先頭へ戻る
  └ > のときは抜ける
Z を出力する
終了
答えと解説を見る

✓ これが正解アa:Y の第 0 ビット / b:X を 1 ビット左シフト,Y を 1 ビット右シフト

解説

見る桁は最下位、X は左へ Y は右へ送ります。

この流れ図は、2 進数の筆算をそのまま機械の手順に直したものです。筆算では乗数の桁を下から 1 本ずつ見て、その桁が 1 なら被乗数を答に足し、次の桁へ進むときに被乗数を 1 つ左へずらしました。流れ図もこの順をなぞっており、判定が乗数のどの桁を見るか、そして次の繰返しへ進む前にレジスタをどちらへ送るか、という 2 か所が空欄になっています。正解は、見る桁を乗数側の第 0 ビットとし、被乗数側の X を 1 ビット左シフト、乗数側の Y を 1 ビット右シフトする組です。Y を右へ送りながら見終わった桁を捨てていくので、見る場所はいつも最下位のままでよく、X を左へ送ることで足し込む値の桁が 1 つずつ上がります。けた送りには論理シフトを用いるため、押し出された反対側には 0 が入ってきます。被乗数 5、乗数 3 で追うと、最下位が 1 なので 5 を足し、X が 10、Y が 1 になり、また最下位が 1 なので 10 を足して合計 15 となり、5 と 3 の積に一致します。繰返しは 1 から 16 まで回るので、乗数の 16 ビットをちょうど使い切ります。

ほかの選択肢はなぜ違うのか

出典:平成22年度 春期 応用情報技術者試験 午前 問5

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)