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

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

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

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  a:Yの第0ビット,b:Xを1ビット左シフト,Yを1ビット右シフト
  2.  a:Yの第0ビット,b:Xを1ビット右シフト,Yを1ビット左シフト
  3.  a:Yの第15ビット,b:Xを1ビット左シフト,Yを1ビット右シフト
  4.  a:Yの第15ビット,b:Xを1ビット右シフト,Yを1ビット左シフト
解答・解説を見る

正解:ア

AI解説

2進整数の乗算をシフトと加算の繰返しで実現する典型的なアルゴリズムでは、乗数(Y)の最下位ビット(第0ビット)を調べて1ならば被乗数(X)を部分積として加算し、その後Xを1ビット左シフト、Yを1ビット右シフトして次のビットの判定に備える処理を乗数のビット数分繰り返す。したがって正解はアである。 ア: a:Yの第0ビットを判定し、b:Xを1ビット左シフト、Yを1ビット右シフトする組合せ。乗算のシフト加算アルゴリズムの標準的な処理手順に一致する。これが正解。 イ: シフトの方向(Xを右シフト、Yを左シフト)が逆になっており、部分積の桁合わせが正しく行われない。 ウ: 判定するビット位置が第15ビット(最上位側)になっており、下位ビットから処理する一般的なアルゴリズムと異なる。 エ: 判定ビット位置とシフト方向の両方が標準的なアルゴリズムと異なる組合せ。 💡 シフト加算による乗算は「乗数の最下位ビットから順に判定→被乗数を左シフトしながら加算→乗数を右シフトして次のビットへ」という流れを図と対応させて覚える。

出典:平成22年度 春期 応用情報技術者試験 午前 問5 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問