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





このページは

基本情報

(基本情報技術者試験)

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

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


問1 次の10進小数のうち、8進数に変換したときに有限小数になるものはどれか。
0.3
0.4
0.5
0.8
解答
解説 8進数で表せるかということは、2進数で表せるかということと同じ意味と同じです。よって、0.5、0.25、0.125、0.0625・・・の和で表せるかということなので、0.5は2進数で0.1。8進数で0.4となります。

問2 0000〜4999のアドレスをもつハッシュ表があり、レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか。ここで、基数変換法ではキー値を11進数とみなし、10進数に変換した後、下4けたに対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。
0260
2525
2775
4405
解答
解説 まずは、55550を10進数に直します。
0×110+5×111+5×112+5×113+5×114=0+5×11+5×121+5×1331+5×14641=0+55+605+6655+14641+73205=80520

これの下4けたを半分にしたものは0260となります。

問3 整数mがレジスタに2進数として入っている。これを3ビット左にシフトしたものにmを加えると、結果は元のmの何倍になるか。ここで、あふれが生じることはないものとする。
解答
解説 ビットシフトは右に1ビットシフトすると、1/2倍。左に1ビットシフトすると2倍になるという性質があります。よって、3ビット左にシフトすると8倍になります。これにもともとの値を加えるので9倍となります。

問4 pを2以上の整数とする。任意の整数nに対して、

n = kp+m (0≦m<p)

を満たす整数kとmが一意に存在する。このmをnのpによる剰余といい、n mod p で表す。(−10000) mod 32768に等しくなるものはどれか。
−(10000 mod 32768)
−(22768 mod 32768)
10000 mod 32768
22768 mod 32768
解答
解説 一般的な余りについての問題です。n = kp + (n mod p)なので、式の−10000 = k32768 + (n mod p)。よって、K=1、(n mod p) = 22768となります。同様に計算していくと、選択肢アも10000 = k32768 − (n mod p)で(n mod p) = 22768となります。

問5 多くのコンピュータが、減算回路を簡単にするために補数を用いている理由はどれか。
加算を減算で処理できる。
減算を加算で処理できる。
乗算を加算の組合せで処理できる。
除算を減算の組合せで処理できる。
解答
解説 補数(主に2の補数が用いられる場合が多い)は負数を表現するために用いられる表現で、これにより、減算を足し算で表現できます。つまり、A−BをA+(−B)と加算で表現できるようになり、回路が簡単になります。

問6 浮動小数点表示された数値の演算結果における丸め誤差の説明はどれか。
演算結果がコンピュータの扱える最大値を超えることによって生じる誤差である。
数表現のけた数に限度があるので、最下位けたより小さい部分について四捨五入や切上げ、切捨てを行うことによって生じる誤差である。
乗除算において、指数部が小さい方の数値の仮数部の下位部分が失われることによって生じる誤差である。
絶対値がほぼ等しい数値の加減算において、上位の有効数字が失われることによって生じる誤差である。
解答
解説 まず、それぞれの誤差について下にまとめます。

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

情報落ちは絶対値の小さいものから計算することで回避できます。
けた落ちは式を変形するなどで回避することができます。
そのほかは、誤差が許容できるほどに大きな計算桁数を準備することで軽減できます。

問7 コンピュータで連立一次方程式の解を求めるのに、式に含まれる未知数の個数の3乗に比例する計算時間がかかるとする。あるコンピュータで100元連立一次方程式の解を求めるのに2秒かかったとする。その4倍の演算処理をもつコンピュータで1,000元連立一次方程式の解を求めるときの計算結果は何秒か。
50
500
5,000
解答
解説 まず、現在の性能で100と1000元方程式の比をもとめると、1004/1003となり、1000倍であることがわかります。つまり、今の性能では、2000秒かかるので、4倍の性能では、500秒となります。

問8 排他的論理和を4ビット単位で実行するユニットA、B、Cから構成される装置がある。この装置では、入力ビット列1101を与えると、出力ビット列0100が得られる。ここで、ユニットBの内部かぎを変更したところ、出力ビット列が1111になった。変更後のユニットBの内部かぎはどれか。

画像(問8)を表示できません
1011
1100
1101
1110
解答
解説 1つずつ追っていきます。

まずは、変更前をEXORの確認の意味をこめて追跡します。
EXORは、ビットが同じならば0、ビットが異なる場合は1を出力します。

@1101 EXOR 0001 = 1100
A1100 EXOR 0101 = 1001
B1001 EXOR 1101 = 0100
次に変更した鍵を逆に追っていきます。
BYYYY EXOR 1101 = 1111 → YYYY = 0010
A1100 EXOR XXXX = 0010 → XXXX = 1110

よって、2番目の鍵は、1110になったといえます。

問9 XとYの否定論理積X NAND Yは、NOT(X AND Y)として定義される。X OR YをNANDだけを使って表した論理式はどれか。
((X NAND Y)NAND X)NAND Y
(X NAND X)NAND(Y NAND Y)
(X NAND Y)NAND(X NAND Y)
X NAND(Y NAND(X NAND Y))
解答
解説 まず、A NAND Aのように、同じ入力をNANDに入れるとAの否定を作ることができます。

X OR Y = (X OR Y)の二重否定
(X OR Y)の二重否定 = Xの否定 NAND Yの否定 (ド・モルガンの定理)
よって、(X NAND X)NAND(Y NAND Y)はX OR Yと等価であることがわかります。

最後に、XORやXANDはそれだけですべての演算子を作れるため、最小万能演算系と呼ばれます。

問10 正規表現[A−Z]+[0−9]*が表現する文字列の集合の要素となるものはどれか。ここで、正規表現は次の規則に従う。

[A−Z]は、英字1文字を表す。
[0−9]は、数字1文字を表す。
*は、直前の正規表現の0回以上の繰返しを表す。
+は、直前の正規表現の1回以上の繰返しを表す。
456789
ABC99*
ABC+99
ABCDEF
解答
解説 正規表現を日本語に直すとA−Zが1回以上現れ、その後0−9が0回以上現れるという意味になります。よって、A−Zが含まれない選択肢アは間違いです。+や*は文字ではないので、選択肢イ、選択肢ウも間違いです。0−9は現れなくてもいいので、選択肢エは正解です。

問11 探索方法とその実行時間のオーダの正しい組合せはどれか。ここで、探索データ数をnとし、ハッシュ値の衝突する(同じ値になる)確率は無視できるほど小さいものとする。また、実行時間のオーダがn2であるとは、n個のデータを処理する時間がcn2(cは定数)で抑えられることをいう。
画像(問11ans)を表示できません
解答
解説 3つのオーダについてまとめると下のようになります。

2分探索:1回で対象を半分にするので、log2
線形探索:1つずつN個を探すので、N
ハッシュ探索:関数で場所を特定するので、衝突が起こらない限り、1

問12 すべての葉が同じ深さをもち、葉以外のすべての節点が二つの子をもつ2分木に関して、節点数と深さの関係を表す式はどれか。ここで、nは節点数、kは根から葉までの深さを表す。例に示す2分木の深さkは2である。

画像(問12)を表示できません
n = k(k+1)+1
n = 2k+3
n = 2k+1−1
n = (K−1)(k+1)+4
解答
解説 このような木を完全2分木といい、節点数をまとめると下のようになります。

k=0 → n=1
k=1 → n=1+2=3
k=2 → n=1+2+4=7
k=3 → n=1+2+4+8=15
k=4 → n=1+2+4+8+16=31


よって、n=2k+1−1となります。

問13 データ構造に関する記述のうち、適切なものはどれか。
2分木は、データ間の関係を階層的に表現する木構造の一種であり、すべての節が二つの子をもつデータ構造である。
スタックは、最初に格納したデータを最初に取り出す先入れ先出しのデータ構造である。
線形リストは、データ部と次のデータの格納先を示すポインタ部から構成されるデータ構造である。
配列は、ポインタの付替えだけでデータの挿入・削除ができるデータ構造である。
解答
解説 選択肢のデータ構造を下にまとめます。

選択肢アは、完全2分木の説明です。(2分木は、すべての節が2つの子供を持たなくても認められます。)
選択肢イは、キューの説明です。
選択肢ウは、線形リストは、リストの一種でデータと次のポインタからできています。
選択肢エは、リストの説明です。

問14 2分探索に関する記述のうち、適切なものはどれか。
2分探索するデータ列は整列されている必要がある。
2分探索は線形探索より常に速く探索できる。
2分探索は探索をデータ列の先頭から開始する。
n個のデータの探索に要する比較回数はnlognに比例する。
解答
解説 2分探索は、データを昇順または降順にソートし、そこから中央の値と探索データを比較することで範囲を半分にしていく探索手法です。よって、データは事前にソートされている必要があり、オーダは、log2Nとなります。

選択肢ウは線形探索の説明です。線形探索のオーダは、Nで2分探索より大きいですが、探索値が先頭付近にある場合は、線形探索のほうが速い場合もあります。

問15 次の関数f(n,f)がある。f(4,2)の値は幾らか。

画像(問15)を表示できません
解答
解説 ひとつずつ追跡していきます。

f(4,2)=f(3,1)+f(3,2)

まず、f(3,1)のほうから計算していきます。
f(3,1)=f(2,0)+f(2,1)
f(2,0)=1
f(2,1)=f(1、0)+f(1,1)
f(1,0)=1
f(1,1)=1

よって、f(4,2)=3+f(3,2)

つぎに、f(3,2)を計算します。
f(3,2)=f(2,1)+f(2,2)
f(2,2)=1
f(2,1)=f(1、0)+f(1,1)
f(1,0)=1
f(1,1)=1

つまり、f(4,2)=3+3=6となります。

問16 4ビットの入力データに対し、1の入力数が0個又は偶数個のとき出力が1、奇数個のとき出力が0になる回路はどれか。

画像(問16q)を表示できません
画像(問16ans)を表示できません
解答
解説 真理値表や、入力をすべて試すのもいいのですが、ここでは、論理的な手法で考えます。

EXORは、1が偶数個なら0、奇数個なら1を出力します。

よって、2ビットずつ区切ったときに、偶数=0、奇数=1が2つ出てきます。
これを2段目のEXORで、偶数と偶数=0,0=0。偶数と奇数=0、1=1。奇数と偶数=1、0=1。奇数と奇数=1、1=0となります。
よって、これを反転することで、偶数時に1、奇数時に0を出力する回路となります。

問17 すべての命令が5サイクルで完了するように設計されたパイプライン制御のコンピュータがある。20命令を実行するには何サイクル必要となるか。ここで、すべての命令は途中で停止することなく実行できるものとする。
20
21
24
25
解答
解説 1つめの命令は、5クロックで終了します。2つめの命令は、6クロック目で終了します。3つめの命令は、7クロック目で終了します。よって、N命令は5+(N−1)クロックで終了します。なので5+19=24クロックで20命令が終了するといえます。

問18 インデックス修飾によってオペランドを指定する場合、表に示す値のときの実効アドレスはどれか。

画像(問18)を表示できません
110
1010
1100
1110
解答
解説 インデックス修飾は、命令部のアドレス+インデックスレジスタの値で計算されます。よって、10+100=110が実効アドレスになります。

問19 動作クロック周波数が700MHzのCPUで、命令の実行に必要なクロック数とその命令の出現率が表に示す値である場合、このCPUの性能は約何MIPSか。

画像(問19)を表示できません
10
50
70
100
解答
解説 まず、命令実行に必要な平均クロック数を求めると4×0.3+8×0.6+10×0.1=7となります。よって、7命令を700MHzで実行すると、1秒間に700M/7=100MIPSとなります。

問20 外部割込みに分類されるものはどれか。
主記憶に存在しないページをアクセスしようとしたときに発生する割込み
入出力要求など、OSに対してサービスを依頼したときに発生する割込み
ハードウェアが異常を検知したときに発生する割込み
浮動小数点数演算でオーバフローが起こったときに発生する割込み
解答
解説 まず、割り込には大きく分けて内部割りこみと外部割り込みがあります。内部割り込はゼロによる除算に代表されるソフトウェア的な原因。外部割り込みは、入出力の完了や電圧異常などに代表されるハードウェア的な原因です。

また、割り込みを受け付けるとCPUはレジスタのデータを主記憶等に退避させ、割り込みの処理を実行します。さらに、複数の割り込みに優先順位をつけ、順位の低いものが、順位の高いものに割り込みを行わないようにマスク処理をする場合もあります。