基本情報技術者過去問題 平成24年春期 午後問8

⇄問題文と設問を画面2分割で開く⇱問題PDF

問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を返す。
〔プログラム2,3の説明〕
 整数型関数 BitCount を,次のとおりに宣言する。
  ○整数型関数:BitCount(8ビット論理型:Data)
 検査される8ビットのデータは入力用の引数 Data に格納されている。
 このためのプログラムとして,基本的なアルゴリズムを用いたプログラム2と,処理効率を重視したプログラム3を作成した。
 プログラム2,3中の各行には,ある処理系を想定して,プログラムの各行を1回実行するときの処理量(1,2,…)を示してある。選択処理と繰返し処理の終端行の処理量は,それぞれの開始行の処理量に含まれるものとする。
 なお,演算子"−"は,両オペランドを8ビット符号なし整数とみなして,減算を行うものとする。

設問1

プログラム1中の に入れる正しい答えを,解答群の中から選べ。
a,b に関する解答群
  • (Data & Mask) = "00000000"B
  • (Data & Mask)= Data
  • (Data & Mask) = Mask
  • (Data | Mask) = "00000000"B
  • (Data | Mask) = Mask

解答選択欄

  • a:
  • b:

解答

  • a=
  • b=

解説

この設問の解説はまだありません。

設問2

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

 プログラム1は,Mask 中に1のビットが1個以上あることを前提としている。ここで,この前提を取り除いて,Mask 中の1のビットが0個の場合は返却値0を返すようにしたい。そのために,プログラム1の処理部分について,次の修正案@〜Bを考えた。ここで,修正案@は,プログラム1のままで何も変更しない。また,abには,設問1の正しい答えが入っているものとする。
pm08_4.gif/image-size:435×166
 これらの修正案のうち,正しく動作するのはcである。
c に関する解答群
  • 修正案@
  • 修正案A
  • 修正案B
  • 修正案@及びA
  • 修正案@及びB
  • 修正案A及びB

解答選択欄

  • c:

解答

  • c=

解説

この設問の解説はまだありません。

設問3

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

 プログラム2,3の処理効率について考えてみる。表1にプログラム2,3の処理量の比較結果を示す。
pm08_5.gif/image-size:230×92
 プログラム3では,αの行での変数 Work の更新において効率の良いアルゴリズムが使われている。例えば,プログラム3で引数 Data の内容が "01101010"B であったとき,繰返し処理においてαの行の2回目の実行が終了した時点で変数 Work の内容は,"f"Bになっている。このようなビット変換の処理によって,繰返し処理の繰返し回数は,検査されるデータ中の1のビットの個数と同じになる。
d に関する解答群
  • 80
  • 88
  • 104
  • 112
e に関する解答群
  • 6
  • 10
  • 20
  • 22
f に関する解答群
  • 00000011
  • 00000110
  • 00001010
  • 01010000
  • 01100000
  • 10100000

解答選択欄

  • d:
  • e:
  • f:

解答

  • d=
  • e=
  • f=

解説

この設問の解説はまだありません。

平成24年春期 午後問題一覧

問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11 問12 問13 採点講評
© 2010-2021 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop