修了試験 2014-07-27実施分 基本情報技術者試験 問6
流れ図は,シフト演算と加算の繰返しによって2進整数の乗算を行う手順を表したものである。 この流れ図中のa,bの組合せとして,適切なものはどれか。 ここで,乗数と被乗数は符号なしの16ビットで表される。 X,Y,Zは32ビットのレジスタであり,桁送りには論理シフトを用いる。 最下位ビットを第0ビットと記す。

正答1
解説
正解は1です。 流れ図では、Xに被乗数、Yに乗数、Zに0、iに1を入れ、iが16を超えるまで処理を16回繰り返します。 繰返しの中では、aが1に等しければZにXを加え、その後にbを行ってiを1増やします。 これは筆算の掛け算と同じで、乗数の各ビットが1のとき、その桁の重みだけずらした被乗数を足し込む方式です。 【選択肢別解説】 1:○ 毎回Yの第0ビットを調べ、1ならXをZに加えます。 その後Xを1ビット左シフトすると、Xは次の桁の重み(2倍)をもった被乗数になります。 Yを1ビット右シフトすると、次に調べるビットが第0ビットに移ります。 16回繰り返すと、乗数16ビットの全ビットについて正しく加算され、Zに積が求まります。 2:× Yを左シフトすると、第0ビットには0しか入ってきません。 2回目以降は乗数の上位ビットを調べられず、Xも右シフトで小さくなるため、正しい積になりません。 3:× Yを右シフトすると、第15ビットには0が入ってきます。 2回目以降は乗数の下位ビットを調べられないので、正しい積になりません。 4:× 最上位ビットから調べる場合、最初の加算では被乗数を2の15乗倍した値を足す必要があります。 この流れ図ではXは被乗数のままで、さらに右シフトで小さくなるので、正しい積になりません。 【ポイント】 「乗数を右シフトして第0ビットを調べる」と「被乗数を左シフトして桁の重みを上げる」はセットです。 調べるビットとシフトの向きの組合せで判断しましょう。まとめて解く
修了試験 2014-07-27実施分を通しで解く(80問)→