平成22年 秋期 基本情報技術者 午後 問08
問08 必須問題次のプログラムの説明及びプログラムを読んで,設問1,2に答えよ. プログラム1及びプログラム2は,いずれも二つの整数 M,N を受け取り, その積 M × N の値を返す。積は,加減算とシフト演算を使って求める。 M,N 及び求めた積は,いずれも符号付き2進数の整数で,負数は2の補数で表現する。 〔プログラム1の説明〕 プログラム1が受け取る M,N は,いずれも4ビットで,各値の範囲は−8 〜 7 である。 求めた積 M × N は,8 ビットで返す。ただし,プログラム1中では,M を 5 ビットに, N を 8 ビットに拡張して処理を行う。 R は 13 ビットの作業用変数であり,最下位から順にビット番号を 0,1,… とし, 最上位(符号ビット)のビット番号を 12 とする。R は, 指定した一部の範囲(例えば,ビット番号 12 〜 8 の上位 5 ビット)だけを 符号付き2進数とみなして部分的な算術演算ができる。また, 値の検査のために指定したビット番号の内容を取り出すこともできる。 なお,Eの行の加算では,けたあふれが起きても無視する。 N=3 として,M=5 と M=−5 の場合の処理過程を,それぞれ図1,2に示す。 図1,2中の記号@〜Gは,プログラム1の@〜Gの行の処理と対応している。 〔プログラム1〕
〔プログラム2の説明〕 プログラム2が受け取る M,N は,いずれも 4 ビットで,各値の範囲は −8 〜 7 である。 求めた積 M × N は,8 ビットで返す。ただし,プログラム2中では,M を 5 ビットに拡張して処理を行う。 R は 10 ビットの作業用変数であり,最下位から順にビット番号を 0,1,… とし , 最上位(符号ビット)のビット番号を 9 とする。 R は,指定した一部の範囲(例えば ,ビット番号 9 〜 5 の上位 5 ビット)だけを 符号付き2進数とみなして部分的な算術演算ができる。また,値の検査のために 指定したビット番号の内容を取り出すこともできる。 なお,Dの行の加算及びFの行の減算では,けたあふれが起きても無視する。 M =−5,N = 3 の場合の処理過程を図3に示す。図3中の記号@〜Hは, プログラム2の@〜Hの行の処理と対応している。 〔プログラム2〕
図3 プログラム2の実行例 設問1 図2及び図3中の に入れる正しい答えを, 解答群の中から選べ。 a に関する解答群 b,c に関する解答群
設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。 (1) プログラム1のBの行では,積を求めるための R の下位8ビットに N の値を設定している。 それは,効率を考えて ためである。 (2) プログラム2はプログラム1と比べて,加減算の回数が少なくて済む場合がある。 特に効果があるのは N < 0 のときで,このとき,プログラム1では, Eの行の加算は最低でも 回実行されるが, プログラム2では,Dの行の加算とFの行の減算との合計は 最高でも 回で済む。 (3) プログラム1では,Nのビットが1の位置で加算をするので,例えば N=7 (2進数で 0111 )なら,加算が3回必要である。一方,プログラム2では, N の各ビットを最下位から順に調べ,1が現れたけた位置では減算をし, 次に1の並びが途切れて0が現れたけた位置では加算をする,という処理を繰り返す。 例えば N = 7(2進数で 0111 )の場合,M × 7 を M ×( )と して計算をするので,2進数での加減算の回数が2回で済む。 d に関する解答群 イ 与えられたNの値が1のとき,ループ内の加算処理の実行回数を0にできる ウ 中間結果のシフトと N のビットの順次取出しを,1回のシフトで済ませる エ 中間結果のシフトによって,与えられた N の値の符号検査をなくせる エ 4 オ 5 カ 6
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||