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





このページは

基本情報

(基本情報技術者試験)

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

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


問1 10進数の演算式7÷32の結果を2進数で表したものはどれか。
0.001011
0.001101
0.00111
0.0111
解答
解説 7÷32=0.21875を2進数に変換します。

小数点より、上の場合は2で割った余りで計算していきますが、小数点よりしたの場合は2を掛けていったときの1の位をみます。

0.21875×2=0.4375により、0
0.4375×2=0.875より、0
0.875×2=1.75により、1
0.75×2=1.5より1
0.5×2=1.0により1で終了

これを上からたどって、00111が小数点以下の値となります。よって、0.00111が答えになります。

もちろん、2進数にした7と32を使ってもよいのですが、10進数から計算するほうが間違いが少ないかと思います。

問2 次の式は、何進法で成立するか。
1015÷5=131(余り0)
解答
解説 それぞれを10進数に変換しながら計算し行きます。5は、6進数でも、7進数でも、8進数でも、9進数でも同じなので省略します。

6進数
(1015)6=1×6×6×6+1×6+5=(227)10
227÷5=45.4により、割り切れないので間違い。

7進数
(1015)7=1×7×7×7+1×7+5=(355)10
335÷5=(71)10=1×7×7+3×7+1=(131)7により正解

8進数
(1015)8=1×8×8×8+1×8+5=(512)10
525÷5=(105)10=1×8×8+5×8+1=(151)8により不正解

9進数
(1015)9=1×9×9×9+1×9+5=(743)10
743÷5=148.6により、割り切れないので、間違い。

問3 実数aをa=f×reと表す浮動小数点表記に関する記述として、適切なものはどれか。
fを仮数、eを指数、rを基数という。
fを基数、eを仮数、rを指数という。
fを基数、eを指数、rを仮数という。
fを指数、eを基数、rを仮数という。
解答
解説 コンピュータ上で数値を表す表現の一種に浮動小数点表記というのがあります。

これは、実数や、指数表記を用いるような数を表すもので、f×reで表現されます。
たとえば、123000000は、1.23×108となります。このとき、1.23を仮数(仮数部)、10を基数(基数部)、8を指数(指数部)といいます。
コンピュータ上では、基数を2と固定して、符号と仮数と指数を表すのが一般的です。なお、仮数を1.xxxxとすることで、1ビット節約することを『けち表現』などといい、このように変換することを正規化といいます。

問4 32ビットのレジスタに16進数ABCDが入っているとき、2ビットだけ右に論理シフトしたときの値はどれか。
2AF3
6AF3
AF34
EAF3
解答
解説 ABCDを2進数に変換すると
0000 0000 0000 0000 1010101111001101となります。

これを右に2ビットシフトします。すると
xx00 0000 0000 0000 0010 1010 1111 0011となり、01は捨てられます。

このとき、xxに何が入るかですが、特段の取り決めがない場合は符号と同じものが入ります。(正の場合は0、負の場合は1)この場合は、暗黙ではありますが負数の定義がないので、正数であると考えられるので、xxには00がはいります。よって

0000 0000 0000 0000 0010 1010 1111 0011を2進数にしたものが正解となります。
よって (00002AF3)16=(2AF3)16となります。

問5 けた落ちの説明として、適切なものはどれか。
値がほぼ等しい浮動小数点同士の減算において、有効けた数が大幅に減ってしまうことである。
演算結果が、扱える数値の最大値を超えることによって生じる誤差である。
数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差である。
浮動小数点の加算において、一方の数値の下位のけたが欠落することである。
解答
解説 コンピュータ上で値を扱う場合には、誤差という問題があります。これは、真の値を表現しきれないために近似ということをするために、おきるものです。

選択肢アは、けた落ちに関するものです。
選択肢イは、オーバフローに関するものです。(扱える数値の最小値を下回ることによる誤差をアンダーフローといいます。)
選択肢ウは、丸め誤差に関するものです。
選択肢エは、情報落ちに関するものです。

式を変形することで解消することがあります。例:√(x+1) − √(x)=1/(√(x+1)+√(x))

問6 赤、白、黄の3種類の球が3個ずつ入っている箱の中から、3個の球を同時に取り出すとき、すべて白の球になる確率は幾らか。
1/84
3/14
5/21
11/14
解答
解説 全体の確率を3つの確率に分解します。1個目の白を出す確率、2個目の白を出す確率、3個目の白を出す確率

P(x1):1個目の白を出す確率は9個の中から3つで、3/9=1/3
P(x2):2個目の白を出す確率は8個の中から2つで、2/8=1/4
P(x3):3個目の白を出す確率は7個の中から1つで、1/7

全体の確率=P(x1)×P(x2)×P(x3)により、1/84となります。同時といってもわずかな時間差はあると考えなおすと分かりやすいかも知れません。

問7 1ビットの数A、Bの和を2ビットで表現したとき、上位ビットCと下位ビットSを表す論理式の組合せはどれか。ここで、“・”は論理積、“+”は論理和、はXの否定を表す。

画像(問7)を表示できません
画像(問7ans)を表示できません
解答
解説 一般的な半加算器の論理式です。

Cはけた上がりを表し、1と1の場合は10となり繰り上がるので、1となります。
Sはそのけたを表し、1と0の場合と0と1の場合を表しその場合のみ1となります。

よって、CはAとBの論理積、SはAとBの排他的論理和となります。

問8 関数eq(X、Y)は引数XとYの値が等しければ1を返し、異なれば0を返す。整数A、B、Cについて、eq(eq(A、B)、eq(B、C))を呼び出したとき、1が返ってくるための必要十分条件はどれか。
(A=BかつB=C)又は(A≠BかつB≠C)
(A=BかつB=C)又は(A≠B又はB≠C)
(A=BかつB=C)又はA=C
(A=B又はB=C)又はA=C
解答
解説 eq(eq(A、B)、eq(B、C))が1を返すためには、eq(A、B)、eq(B、C)が1と1、0と0の場合です。

これは、A=B、B=Cのとき1と1になり、A≠B、B≠Cのとき、0と0になります。

よって、(A=BかつB=C)又は、(A≠B、B≠C)のときとなります。)

問9 論理型の変数A、Bに関わらず、次の流れ図と同一の分岐が得られるものはどれか。ここで、ANDは論理積、ORは論理和、XORは排他的論理和、NANDは否定論理積を表す。

画像(問9)を表示できません
画像(問9ans)を表示できません
解答
解説 流れ図を論理式に直すと分かりやすいです。

A=真、B=真、exit2
A=真、B=偽、exit1
A=偽、B=真、exit1
A=偽、B=偽、exit2

これにより、exit2は排他的論理和(XOR)であることが分かります。

問10 2種類の文字“A”、“B”を1個以上、最大n個並べた符号を作る。60通りの符号を作るときのnの最小値は幾らか。
解答
解説 1個以上なので、したから順に計算していきます。
1個の場合:2^1(A、B)=2種類
2個の場合:2個を並べたもの+1個の場合=2^2(AA、AB、BA、BB)+2種類=6通り
3個の場合:3個並べたもの+2個の場合=2^3+6通り=14通り
4個の場合:4個並べたもの+3個の場合=2^4+14通り=30通り
5個の場合:5個並べたもの+4個の場合=2^5+30通り=62通り

n個並べた場合は、一般的な2進数のビット数に相当し、6ビット=64となりますが、ここでは間違えないように注意してください。

問11 探索方法とその実行時間のオーダの正しい組み合わせはどれか。ここで、探索するデータ数をnとし、ハッシュ値が衝突する(同じ値になる)確率は無視できるほど小さいものとする。また、実行時間がn2であるとは、n個のデータを処理する時間がcn2(cは定数)で抑えられることを言う。
画像(問11ans)を表示できません
解答
解説 2分法は、ソートされている探索領域において、中央値から大きいか小さいかで分けていくので1回につき検索範囲が半分になるので、log2nとなります。線形探索は、先頭から順番に見ていくので、n個データがあればオーダはnとなります。ハッシュ法はハッシュ関数と呼ばれる関数によって値を計算し、そこにデータを格納するのでハッシュ値が衝突しない限りは、1となります。nlog2nは、マージソートなどのソート法などのオーダです。

問12 A,B,C,Dの順に到着するデータに対して、一つのスタックだけを用いて出力可能なデータ列はどれか。
A,D,B,C
B,D,A,C
C,B,D,A
D,C,A,B
解答
解説 スタックは、LIFOのデータ構造で再帰的なものと関わりがが深いです。スタックにデータを入れることをプッシュ、取り出すことをポップといいます。

今回の場合は、
@プッシュ(A)
Aプッシュ(B)
Bプッシュ(C)
Cポップ(C)→Cを取り出す。
Dポップ(B)→Bを取り出す。
Eプッシュ(D)
Fポップ(D)→Dを取り出す
Gポップ(A)→Aを取り出す

ことによって、C、B、D、Aの順にデータを取り出せます。

問13 16進数で表される9個のデータ1A、35、3B、54、8E、A1、AF、B2、B3を順にハッシュ表に入れる。ハッシュ値をハッシュ関数f(データ)=mod(データ、8)で求めたとき、最初に衝突が起こる(既に表にあるデータと等しいハッシュ値になる)のはどのデータか。ここで、mod(a、b)はaをbで割った余りを表す。
54
A1
B2
B3
解答
解説 f(データ)=mod(データ、8)というのは、データA×(α8)=データBのとき衝突が起きます。
一般的には10進数に変換して8で割った余りを順次もとめていけばいいのですが、今回は8で割ったあまりということなので、ビットの性質を利用したいと思います。 1→00001
9=1×8+1→01001
17=2×8+1→10001
25=3×8+1→11001
以上のように、8を加えても、下位3ビットは変化しません。よって、データの下位3ビットを調べて同じものがあった場合に衝突と判断することができます。

1A→010
35→101
3B→011
54→100
8E→110
A1→001
AF→111
B2→011

B2と3Bはともに011で値が3でハッシュ値が衝突することがわかります。

また、直感的に分かると思いますが、9個のデータを8個の表に入れると必ず衝突がおきます。(鳩の巣論法により証明)

問14 非負の整数nに対して次のとおりに定義された関数F(n)、G(n)がある。F(5)の値は幾らか。

F(n):if n≦1 then return 1 else return n×G(n−1)
G(n):if n≦0 then return 0 else return n+F(n−1)
50
65
100
120
解答
解説 再帰プログラムに関する問題です。丁寧にトレース(値の追跡)していけば解くことができます。

F(5)=5×G(4)
G(4)=4+F(3)
F(3)=3×G(2)
G(2)=2+F(1)
F(1)=1
よって、したから代入していきます。 G(2)=2+1=3
F(3)=3×3=9
G(4)=4+9=13
F(5)=5×13=65

よって、答えは65となります。

問15 配列Aの1番目からN番目の要素に整数が格納されている(N>1)。次の図は、Xと同じ値が何番目の要素に格納されているかを調べる流れ図である。この流れ図の実行結果として、正しい記述はどれか。

画像(問15)を表示できません
Xと同じ値が配列中にない場合、kには1が設定されている。
Xと同じ値が配列中にない場合、kにはNが設定されている。
Xと同じ値が配列の1番目とN番目の2か所にある場合、kには1が設定されている。
Xと同じ値が配列の1番目とN番目の2か所にある場合、kにはNが設定されている。
解答
解説 kには現在調べている要素の要素番号が入っています。Nは個数です。よって最初のif文は、最後まで調べ終わったかどうかをチェックしています。次のif文で値が等しいかをチェックしています。等しい場合はループを抜けるので、そこで終了します。よって等しい値が複数ある場合は、最初に見つかったものの要素番号となることがわかります。なお、値がなかった場合は、k>Nにより、N+1がkの最終値となります。

問16 フリップフロップ回路を利用した高速なメモリはどれか。
DRAM
RDRAM
SDRAM
SRAM
解答
解説 フリップフロップとは、現在の信号と過去の状態から現在の状態(真、偽)を保持するものです。その代表例がSRAMです。DRAMはリフレッシュと呼ばれる動作(値の定期的な更新)が必要なため、比較的低速であるといえます。

問17 アドレス指定方式のうち、命令読出し後のメモリ参照を行わずにデータを取り出すものはどれか。
間接アドレス
指標付きアドレス
即値オペランド
直接アドレス
解答
解説 4つの方式を以下にまとめます。

直接アドレス:値をアドレスと見なして、そのアドレスの値を有効値とする方式です。
間接アドレス:値をアドレスと見なして、そのアドレスの値もアドレスと見なし、そのアドレス値を有効値とする方式です。
指標付きアドレス:値と指標値を足した値をアドレスと見なして、その値を有効値とする方式です。
即値オペランド:値を有効値とする方式です。

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


上記の例を考えると、直接アドレスは、101のアドレスの内容で102。間接アドレスは、101のアドレスの内容(102)の内容で、103.指標付きアドレスは、101+5=106の内容で500。即値オペランドは値そのものなので、101となります。間接アドレスは、2重、3重とすることができます。また、指標付きアドレスは、相対アドレスや再配置可能プログラムを考える上で重要になります。

問18 50MIPSの処理装置の平均命令時間は幾らか。
20ナノ秒
50ナノ秒
2マイクロ秒
5マイクロ秒
解答
解説 1秒間に50×100万回の処理ができるということは、1回の処理はその逆数で、1/50×1/100万回=0.02×マイクロ秒=20ナノ秒となります。

1/キロ=ミリ。1/メガ=マイクロ。1/ギガ=ナノ。1/テラ=ピコであることを利用すると、計算が速く間違いが少なくなります。

問19 キャッシュメモリと主記憶に関するアクセス時間とヒット率の組合せのうち、主記憶の実効アクセス時間が最も短くなるのはどれか。
画像(問19ans)を表示できません
解答
解説 それぞれの計算結果を以下にまとめます。

選択肢ア:10×0.6+70×0.4=6+28=34
選択肢イ:10×0.7+70×0.3=7+21=28
選択肢ウ:20×0.7+50×0.3=14+15=29
選択肢エ:20×0.8+50×0.2=16+10=26
以上により選択肢エが最も実効アクセス時間が短くなります。
今回の場合は、アクセス時間が同じでヒット率だけことなるので、ヒット率が低い選択肢アとウは答えでないことが見抜ければ、さらに計算時間を省略することもできます。

問20 アクセス時間の最も短い記憶装置はどれか。
CPUの2次キャッシュ
CPUのレジスタ
磁気ディスク
主記憶
解答
解説 アクセス時間は、コンピュータ側(CPU側)に近いほど早くなります。よって、

CPUのレジスタ>(CPUの1次キャッシュ)>CPUの2次キャッシュ>(キャッシュメモリ)>主記憶>(ディスクキャッシュ)>磁気ディスクとなります。

また、速度と記憶容量とコストはトレードオフの関係にあり、記憶容量は大小関係が逆になります。