平成20年度春期 基本情報 問1−20 解答編





このページは

基本情報

(基本情報技術者試験)

解答と解説のページです。

問題だけで勉強したい方は目次へ戻ってください


問1 16ビットの2進数nを16進数の各けたに分けて、下位のけたから順にスタックに格納するために、次の手順を4回繰り返す。a、bに入る適切な語句の組合せはどれか。ここでxxxx16は16進数xxxxを表す。

[手順]
(1) [ a ]をxに代入する。
(2) xをスタックにプッシュする。
(3) nを[ b ]論理シフトする。
画像(問1ans)を表示できません
解答
解説 16進数1桁は2進数4桁に相当します。よって、[ a ]で下位4ビットを取り出すために、000F16でマスク処理をします。値を入れ終わったあとは、次の4ビットが最下位4ビットになるようにシフトをするので、右に4ビットシフトします。

問2 10進数の分数1/32を16進数の小数で表現したものはどれか。
0.01
0.02
0.05
0.08
解答
解説 1/32を16nの和であらわすと、0/16+8/162となるので、0.08となります。この手法を重い使いない場合は、一度2進数に変換して(0.00001)2としてから、求めてもいいと思います。

問3 負数を2の補数で表すとき、すべてのビットが1であるnビットの2進数“1111・・・11”が表す数値又はその数式はどれか。
−(2n-1−1)
−1
n−1
解答
解説 補数とは、X+Y=0となるような関係をいいます。つまり、2回補数をとると、元の値にもどります。

111 ・・・ 111をビット反転し(000 ・・・ 000)。これに1を加えて(000 ・・・ 001)ということで、元の値は−1であることがわかります。

問4 数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍にする操作はどれか。ここで、シフトによるあふれは、起こらないものとする。
xを2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。
xを2ビット左にシフトした値にxを加算し、更に2ビット左にシフトする。
xを3ビット左にシフトした値と、xを2ビット左にシフトした値を加算する。
xを3ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。
解答
解説 2進数は1ビット左にシフトすると2倍になるという性質をもっています。つまり10倍とは、5倍した値を2倍することで実現できるということになります。これは、左に2ビットした値(4倍)に元の値を加え(5倍)、さらに1ビット左にシフト(10倍)すればよいことになります。

問5 浮動小数点数表示の仮数部が23ビットであるコンピュータで計算した場合、情報落ちが発生する計算式はどれか。ここで、()2内の数は2進数で表示されている。
(10.101)2×2-16−(1.001)2×2-15
(10.101)2×216−(1.001)2×216
(1.01)2×218+(1.01)2×2-5
(1.001)2×220+(1.1111)2×221
解答
解説 コンピュータ上で値を扱う場合には、誤差という問題があります。これは、真の値を表現しきれないために近似ということをするために、おきるものです。

けた落ち:値がほぼ等しい浮動小数点同士の減算において、有効けた数が大幅に減ってしまうこと
オーバフロー:扱える数値の最大値を超えることによって生じる誤差(扱える最小値を下回ることによる誤差をアンダーフローといいます)
丸め誤差:数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差
情報落ち:浮動小数点の加算において、一方の数値の下位のけたが欠落すること

よって、指数部が18と-5で23ビットの差があるので、仮数部の値が保障されないことがわかります。

問6 方程式f(x)=0の解の近似解を求めるアルゴリズムとして知られているニュートン法に関する記述として、適切なものはどれか。
y=f(x)の接線を利用して解の近似値を求めるものである。
関数f(x)が微分不可能であっても、解の近似解を求めることができる。
異なる初期値を二つ与える必要がある。
どのような初期値を与えても、必ず解の近似値が得られる。
解答
解説 ニュートン法は、代数方程式の解を求める代表的な手法です。任意の初期値から接線(関数の微分)を引き、x軸と交わる点をもとめるということを繰り返すことで、真の解に近づけていく手法です。しかし、下に凸のようなグラフでは、解の間を行ったり来たりするため、真に解に収束しない場合があります。

f(x)の微分(導関数)が計算できない場合には、その近似式を用いる割線法というのがあります。
初期値をは1つで行うことができます。また、初期値を2つ使う2分法などの手法もあります。

問7 2個の文字AとBを使って、長さ1以上7以下の文字列は何通りできるか。
128
254
255
256
解答
解説 順番に求めていき法則を見つけるのが早いと思います。

1個:A,B
2個:AA,AB,BA,BB
3個:AAA,AAB,ABA,ABB,BAA,BAB,BBA,BBB

これは、2、4、8となっていることから、n個では2nとなることがわかります。

そしてこれらの合計を求めればよいことになります。単純に足していってもいいのですが、2進数で考えると
(1111110)2なので、28-2となるので、254となります。

問8 標本相関係数がー0.9、−0.7、0.7、0.9のいずれかとなる標本の分布と回帰直線を表したグラフのうち、標本相関係数が−0.9のものはどれか。
画像(問8ans)を表示できません
解答
解説 散布図における相関係数は−1〜1の間の値をとります。−1は完全な負の相関。0は無相関。1は完全な正の相関となっています。下に散布図の例を示します。

画像(問8kai)を表示できません

問9 x、y、zを論理変数、Tを真、Fを偽とするとき、次の真理値表で示される関数f(x、y、z)を表す論理式はどれか。ここで、∧は論理積、∨は論理和、はAの否定を表す。

画像(問9)を表示できません
(x∧y)∨(y∧z)
(x∧y)∨(∧z)
(x∧y)∨(
(x∧)∨(
解答
解説 まず、真となる出力の入力を書き出します。

@x∧y∧z
Ax∧y∧
Bx∧∧z
C∧z
つぎに、各式をまとめていきます。
@とAをまとめてx∧y
BとCをまとめて∧z

よって、これらの∨なので、(x∧y)∨(∧z)となります。

問10 7ビットの文字コードの先頭に1ビットの偶数パリティビットを付加するとき、文字コード30、3F、7Fにパリティを付加したものはどれか。ここで、文字コードは16進数で表している。
30、3F、7F
30、3F、FA
B0、3F、FA
B0、BF、7A
解答
解説 まず、それぞれを2進数に展開します。

30=(0011 0000)=1が偶数個=パリティが0
3F=(0011 1111)=1が偶数個=パリティが0
7A=(0111 1010)=1が奇数個=パリティが1

よって、7Aにのみ1のパリティを付加し、30、3F、FAとなります。

問11 次のBNFで定義されるビット列Sであるものはどれか。

<S>::=01|0<S>1
000111
010010
010101
011111
解答
解説 BNF(Backus Naur Form)とは文脈自由言語を定義する言語で、正規表現などを記述するのに用いられています。

この<S>の性質を考えると、0と1が同じ個数。Oの後に1が来る(0の前に1が来ることがない)

この性質に合うのは、選択肢アとなります。

問12 最下位のレベル以外の節点には必ず左右に子が存在する2分探索木から、あるデータを探索する。節点の総数が15のとき、比較する節点の数は最大で幾つか。ここで、探索するデータが存在するとは限らないものとする。
15
解答
解説 まず、左図で木についてまとめます。そして、完全2分木とは右図のような特殊な木で、2分探索などに用いることができます。

画像(問12kai)を表示できません

節点が15個ということは、深さが4であることがわかります。なので、3回の比較が必要となります。しかし、最終的に値が存在するかどうかも比較する必要があるので、4回の比較が必要となります。

問13 データの整列方法に関する記述のうち、適切なものはどれか。
クイックソートでは、ある一定間隔おきに取り出した要素から成る部分列をそれぞれに整列し、更に間隔を詰めて同様の操作を行い、間隔が1になるまでこれを繰り返す。
シェルソートでは、隣り合う要素を比較して、大小の順が逆であれば、それらの要素を入れ替えるという操作を繰り返す。
バブルソートでは、中間的な基準値を決めて、それよりも大きな値を集めた区分と小さな値を集めた区分に要素を振り分ける。次に、それぞれの区分の中で同様な処理を繰り返す。
ヒープソートでは、未整列の部分を順序木に構成し、そこから最大値又は最小値を取り出して既整列の部分に移す。この操作を繰り返して、未整列部分を縮めていく。
解答
解説 代表的な整列法を下にまとめます。

挿入ソート:既に整列済みのデータ列の正しい位置に、データを追加する操作を繰り返していく
選択ソート:データ中の最小値を求め、次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく
バブルソート:隣り合ったデータの比較と入替えを繰り返すことによって、小さな値のデータを次第に端の方に移していく
クイックソート:適当な基準値を選び、それより小さな値のグループと大きな値のグループにグループを分割する。この操作を繰り返していく
シェルソート:ある一定間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返す
ヒープソート:未整列の部分を順序木に構成し、そこから最大値又は最小値を取り除いて既整列の部分に移す。これらの操作を繰り返して、未整列部分を縮めていく

問14 キーxのハッシュ関数としてh(x)=mod(x、97)を用いるとき、キー1094とハッシュ値が一致するものは、キー1〜1000の中に幾つあるか。ここで、mod(x、97)はxを97で割った余りを表す。
10
11
12
解答
解説 ハッシュとは、以下のようなデータ構造で、同じキー値になると衝突が起こります。

画像(問14kai)を表示できません

まず、1094 mod 97=27。

1000/97=10余り30なので、まずどんな値でも10個は存在し、30以下なら11個存在するということになります。

問15 次の流れ図は、2数A、Bの最大公約数を求めるユークリッドの互助法を、引き算の繰返しによって計算するものである。Aが876、Bが204のとき、何回の比較で処理は終了するか。

画像(問15)を表示できません
10
11
解答
解説 順番に追いかけて行きます。

@876−204=672
A672−204=468
B468−204=264
C264−204=60
D204−60=144
E144−60=84
F84−60=24
G60−24=36
H36−24=12
I24−12=12
J12−12=0

よって、12回の比較となります。

問16 DRAMの説明として、適切なものはどれか。
コンデンサに電化を蓄えた状態か否かによって1ビットを表現する。主記憶としてよく用いられる。
製造時にデータが書き込まれる。マイクロプログラム格納用メモリとして用いられる。
専用の装置でデータを書き込むことができ、紫外線照射で消去できる。
フリップフロップで構成され、高速であるが製造コストが高い。キャッシュメモリなどに用いられる。
解答
解説 よく使われるメモリの種類である。DRAMとSRAMを下にまとめます。

SRAM:フリップフロップで構成される。容量は小さいが高速。リフレッシュがいらず消費電力も小さい。比較的高価。主にキャッシュメモリに利用される。
DRAM:コンデンサで構成される。容量は大きいが低速。リフレッシュが必要で消費電力が大きい。比較的安価。主に主記憶に利用される。

リフレッシュとは、値を保持するために、電気的に再充電する操作をいいます。DRAMはトランジスタとコンデンサによって構成されているので、このような操作が必要となります。

問17 スーパスカラの説明はどれか。
処理すべきベクトルの長さがベクトルレジスタより長い場合、ベクトルレジスタ長の組に分割して処理を繰り返す方式である。
パイプラインを更に細分化することによって高速化を図る方式である。
複数のパイプラインを用いて、同時に複数の命令を実行することによって高速化を図る方式である。
命令語を長く取り、一つの命令で複数の機能ユニットを同時に制御することによって高速化を図る方式である。
解答
解説 スーパースカラ(スーパースケーラ)方式は、命令パイプライン上で複数の命令を同時に実行する方式をいいます。

選択肢アは、ベクトルプロセッサの説明です。
選択肢イは、スーパーパイプラインの説明です。
選択肢エは、VLIW(Very Long Instruction Word)の説明です。

問18 主記憶へのアクセスを伴う演算命令を実行するとき、命令解読とオペランドの読出しの間に行われる動作はどれか。
実行アドレス計算
入出力装置起動
分岐アドレス計算
割込み発生
解答
解説 プログラム内蔵方式での命令の実行は、まず大きく分けて、フェッチ(取り出し)とエグゼキューション(実行)に分けられます。
大まかに流れをまとめると、命令読み出し、命令解読、実行アドレス計算、オペランド読み出し、演算、結果の格納というようになります。


問19 クロック周波数が1GHzのCPUがある。このCPUの命令種別が、表に示す二つからなっているとき、処理能力は約何MIPSか。

画像(問19)を表示できません
34
100
125
133
解答
解説 まず、1命令あたりの平均クロック数をもとめます。

10×0.6+5×0.4=6+2=8クロック

よって、1GHz/8=0.125G命令=125MIPS

問20 処理装置で用いられるキャッシュメモリの使用目的として、適切なものはどれか。
仮想記憶のアドレス変換を高速に行う。
仮想記憶のページング処理を高速に行う。
主記憶へのアクセス速度とプロセッサの処理速度の差を埋める。
使用頻度の高いプログラムを常駐させる。
解答
解説 キャッシュメモリは、主記憶とプロセッサのレジスタとのアクセス速度の差を埋めるために用いられるメモリです。同じような役割で、ハードディスクと主記憶のアクセス速度を埋めるために用いられるメモリを、ディスクキャッシュといいます。