基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成24年 春期 基本情報技術者 午後 問08
問08   必須問題

問8 次のプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。

 整数型関数 BitTest は,8ビットのデータ中の指定したビット位置にあるビットの値を 検査して,結果を返す。整数型関数 BitCount は,8ビットのデータ中にある1のビットの個数を返す。

 なお,本問において,演算子“&”,“|”は,二つの8ビット論理型データの 対応するビット位置のビット同士について,それぞれ論理積,論理和を求め,8ビット論理型で 結果を得るものとする。また,“〜”B という表記は,8ビット論理型定数を表す。

〔プログラム1の説明〕

 整数型関数 BitTest を,次のとおりに宣言する。

 ○整数型関数:BitTest(8ビット論理型:Data,8ビット論理型:Mask )

 検査される8ビットのデータは入力用の引数 Data に,検査をするビット位置の情報は 入力用の引数 Mask に,それぞれ格納されている。 Mask 中のビットの値が 1 であるビット位置に 対応した Data 中のビットを検査して,次の返却値を返す。ここで, Mask 中には 1 のビットが 1 個以上あるものとする。

返却値 0:検査した全てのビットが 0

    1:検査したビット中に 0 と 1 が混在

    2:検査した全てのビットが 1

 例えば,図1の例1では,Mask のビット番号7〜5の3ビットが 1 であるので, Data のビット番号7〜5の3ビットの値を検査し, 0 と 1 が混在しているので返却値 1 を返す。 例2では,Mask のビット番号4と 0 の2ビットが 1 であるので,Data の ビット番号4と 0 の2ビットの値を検査し,どちらも 1 であるので返却値2を返す。


     図1 BitTest の実行例

〔プログラム1〕

〔プログラム2,3の説明〕

 整数型関数 BitCount を,次のとおりに宣言する。

○整数型関数:BitCount(8ビット論理型:Data)

 検査される8ビットのデータは入力用の引数 Data に格納されている。

 このためのプログラムとして,基本的なアルゴリズムを用いたプログラム2と, 処理効率を重視したプログラム3を作成した。

 プログラム2,3中の各行には,ある処理系を想定して,プログラムの各行を1回 実行するときの処理量( 1,2,…)を示してある。選択処理と繰返し処理の終端行の 処理量は,それぞれの開始行の処理量に含まれるものとする。

 なお,演算子“−”は,両オペランドを8ビット符号なし整数とみなして,減算を行うものとする。

〔プログラム2〕

(処理量)

〔プログラム3〕

(処理量)

設問1 プログラム1中の に入れる正しい答えを,解答群の中から選べ。

解答群

ア (Data & Mask) = "00000000"B     イ (Data & Mask)= Data

ウ (Data & Mask) = Mask     エ (Data | Mask) = "00000000"B

オ (Data | Mask) = Mask

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを,解答群の中から選べ。

 プログラム1は,Mask 中に 1 のビットが1個以上あることを前提としている。 ここで,この前提を取り除いて,Mask 中の 1 のビットが 0 個の場合は返却値 0 を返すようにしたい。そのために,プログラム1の処理部分について, 次の修正案@〜Bを考えた。ここで,修正案@は,プログラム1のままで何も変更しない。 また, には, 設問1の正しい答えが入っているものとする。

 これらの修正案のうち,正しく動作するのは である。

解答群

ア 修正案@     イ 修正案A     ウ 修正案B

エ 修正案@及びA     オ 修正案@及びB     カ 修正案A及びB

解答 c ←クリックすると正解が表示されます

基本情報技術者試験


設問3 次の記述中の に入れる正しい答えを,解答群の中から選べ。

 プログラム2,3の処理効率について考えてみる。表1にプログラム2,3の処理量の比較結果を示す。

 表1 プログラム2,3の処理量の比較
   最小 最大
 プログラム2   72 
 プログラム3     54

 プログラム3では,αの行での変数 Work の更新において効率の良いアルゴリズムが 使われている。例えば,プログラム3で引数 Data の内容が "01101010"B であったとき, 繰返し処理においてαの行の2回目の実行が終了した時点で変数 Work の内容は, " "B になっている。このようなビット変換の処理によって, 繰返し処理の繰返し回数は,検査されるデータ中の 1 のビットの個数と同じになる。

d に関する解答群

ア 80     イ 88     ウ 104     エ 112

e に関する解答群

ア 6     イ 10     ウ 20     エ 22

f に関する解答群

ア 00000011     イ 00000110     ウ 00001010

エ 01010000     オ 01100000     カ 10100000

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]