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





このページは

基本情報

(基本情報技術者試験)

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

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


問1 次の流れ図は、10進数整数j(0<j<100)を2進数に変換する処理を表している。2進数は下位けたから順に、配列の要素NISHIN(1)からNISHIN(8)に格納される。流れ図のa及びbに入る処理はどれか。ここでjdiv2はjを2で割った商の整数部分を、jmod2はjを2で割った余りを表す。

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

画像(問1ans)を表示できません
解答
解説 まず、10進数の30を2進数に変換する具体例を考えます。

30÷2=15…0
15÷2=7…1
7÷2=3…1
3÷2=1…1
1÷2=0…1

2は2進数の2であり、3進数なら3、4進数なら4となります。ここで、出てきた余りを下からたどると、11110となります。これが求める2進数の値です。

それでは、アルゴリズムにあてはめてみます。
@まず、2で割った余りを取り出す。
A次に、値を半分にする(端数は切り捨て)
B上の2つを値が0になるまで繰り返す。

よって、@がa、Aがbに相当する選択肢エが正解となります。

問2 基数変換に関する記述のうち、適切なものはどれか。
2進数の有限小数は、10進数にしても必ず有限小数になる。
8進数の有限小数は、2進数にすると有限小数にならないこともある。
8進数の有限小数は、10進数にすると有限小数にならないこともある。
10進数の有限小数は、8進数にしても必ず有限小数になる。
解答
解説 まず、2進数3桁を1桁にまとめたものが8進数で、2進数4桁を1桁にまとめたものが16進数です。よって、2進数で表現できるものは、必ず8進数、16進数でも表現できます。逆に8進数、16進数で表現で表現できるものは、必ず2進数で表現できます。

次に、10進数との関係を考えます。
2進数を10進数に変換することを考えると、2-1、2-2・・・2-nのようになっているので、これらの和で表現できます。よって、2進数で表現できることは10進数で表現できます。

しかし、10進数の0.3のようなものは、2-1=0.5と2-2=0.25の間にあるので、厳密な表現はできないということがわかります。

問3 2の補数で表された負数の10101110の絶対値はどれか。
01010000
01010001
01010010
01010011
解答
解説 補数とは、X+Y=0となるようなXとYの関係をいいます。よって、負数の2の補数をとると、元の値に戻ることがわかります。よって、10101110の2の補数を考えます。

10101110
01010001(ビット反転・1の補数)
01010010(1の補数+1・2の補数)

よって、選択肢ウが正解となります。

問4 浮動小数点演算において、絶対値の大きな数と絶対値の小さな数の加減算を行ったとき、絶対値の小さな数の有効けたの一部又は全部が結果に反映されないことを何というか。
打切り誤差
けた落ち
情報落ち
絶対誤差
解答
解説 コンピュータ上で値を扱う場合には、誤差という問題があります。これは、真の値を表現しきれないために近似ということをするために、おきるものです。

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

一方誤差には、絶対誤差と相対誤差があります。
絶対誤差とは、真の値と測定値の差になりますが、これでは、『1と0』と『10000と10001』が同じ誤差になってしまうので、相対的な誤差を求めることが多いです。絶対誤差と相対誤差の計算式を下にまとめます。

絶対誤差|真の値−観測値|
相対誤差|真の値−観測値|/真の値

問5 実数aを引数とする関数int(a)は、aを超えない最大の整数値を返す。例えば、
int(8.9)=8
int(−8.5)=−9
である。整数bと正の小数c(0<c<1)に対して、
a=−(b+c) が成り立つとき、
a−int(a) を使って表した式はどれか。
−c
1−c
c−1
解答
解説 まず、int関数の性質を数直線を使って図示すると下のようになります。

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

Aは元の値で、int(a)は端数を取り除いた値。つまり、3.8−3=0.8のようなものです。
今回は、負の値なので、−1.4+1=0.4のようになります。
一方で、0<c<1により、bは小数点以上。cが小数点以下を表現していると考えられるので、−1.4はb=1。c=0.4という具合です。
最後に、a−int(a)は−1.4+2=0.6のようになるので、1−cが正解となります。

問6 0〜9の数字と空白を組み合わせて長さ3の文字列を作る。先頭の1文字には数字を使えるが、空白文字は使えない。2文字目以降には空白文字もつかえるが、空白文字の後に数字を並べることは許されない。何通りの文字を作ることができるか。ここで、同じ数字の繰返し使用を許すものとする。
1110
1111
1210
1331
解答
解説 まず、一文字目は0〜9の10種類となります。次に、2文字目3文字目を場合わけして考えます。

@数字・数字の場合=10×10
A空白・数字の場合=1×10
B空白・空白の場合=1

よって、10×(100+10+1)=1110通りとなります。

問7 図の線上を、点Pから点Rを通って、点Qに至る最短経路は何通りあるか。

画像(問7)を表示できません
16
24
32
60
解答
解説 P〜RとR〜Qに分けて考えます。とりうる値は右と上の二つです。

P〜Rの場合は、上に2つ右に2つあるので、この組み合わせを考えると42=4!/(2!(4−2)!)=6
R〜Qの場合は、上に2つ右に3つあるので、この組み合わせを考えると52=5!/(2!(5−2)!)=10

よって、6×10で60通りとなります。

問8 5本のくじがあり、そのうち2本が当たりである。くじを同時に2本引いたとき、2本とも当たりとなる確率は幾らか。
1/25
1/20
1/10
4/25
解答
解説 1本目が2/5で、1本目が当たりとした場合の2本目は1/4となります。よって、2/20=1/10となります。

問9 関数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)のときとなります。)

問10 次の真理値表の演算結果を表す真理値表はどれか。ここで、+は論理和、・は論理積を表す。

画像(問10)を表示できません
(x・y)+z
(x+y)・z
x・(y+z)
x+(y・z)
解答
解説 まず、出力が1となる組み合わせを書き出します。

@x・・z
Ax・y・
Bx・y・z

@とBをまとめて、x・z
AとBをまとめて、x・y

さらに、この二つをまとめてx・(y+z)となります。

問11 0〜6の数4個で構成される数列(N3、N2、N1、C)がある。Cはチェックディジット(検査数字)であり、
C=(N3×3+N2×2+N1×1)mod7
を満たす。数列(4、2、□、6)がこの条件を満たすとき、□に当てはまる数はどれか。ここで、a mod bは、aをbで割った余りを表す。
解答
解説 未知数をaとし、条件に合わせてみると(4×3+2×2+a) mod 7 = (12+4+a)mod 7 = 16+a mod 7

これが6になればよいので、答えは、6、13、20、27となります。よって、16+a=20により、a=4となります。

問12 親の節がこの節の値より小さいヒープがある。このヒープへの挿入は、要素が最後部に追加し、その要素が親より小さい間、親と子を交換することを繰り返せばよい。次のヒープの*の位置に要素7を追加したとき、Aの位置に来る要素はどれか。

画像(問12)を表示できません
11
24
25
解答
解説 まず、最初に*の位置に7が挿入されます。その後、親の値と比較しながら適切な位置に調整されます。説明のために以下のようにAのほかに、B、Cのラベルを振ります。

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

@7<25により、*の位置に25。Aの位置に7が入ります。
A7<11により、Aの位置に11。Bの位置に11が入ります。
B7<9により、Bの位置に9。Cの位置に7が入ります。

よって、Aの位置には11が入ります。

問13 2,000個の相異なる要素が、キーの昇順に整列された表がある。外部から入力したキーによってこの表を2分探索して、該当するキーの要素を取り出す。該当するキーが必ず表中にあることが分かっているとき、キーの比較回数は最大何回は。
10
11
12
解答
解説 2分探索では、1回で探索範囲を半分にしていきます。よって、1回で1000。2回で500。3回で250・・・となります。

よって、
log21024=10
log22048=11

により、11回の比較で、1つのデータにたどり着くことができるといえます。もしもデータがあるかどうかが保障されていない場合は、最後の1つが目的の値かどうかを比較するので、12回となります。

問14 nの階乗を再帰的に計算する関数F(n)の定義において、aに入れるべき式はどれか。ここで、nは非負の整数である。

n>0のとき、F(n)=[ a ]
n=0のとき、F(n)=1
n+F(n−1)
n−1+F(n)
n×F(n−1)
(n−1)×F(n)
解答
解説 階乗は再帰的なプログラムの典型的な例です。階乗とは、n!=n×(n−1)×(n−2)・・・3×2×1という値です。これは見方を変えるとn×(n−1)の階乗と分けることができます。(n−1)もn−1×(n−2)の階乗となります。よって、n×F(n−1)となります。
選択肢アは、合計(サムメーション)を求めるプログラムです。
選択肢イ、エは、F(n)が含まれており、値が減少していないので、無限ループに陥りプログラムがとまらなくなります。

問15 業務の改善提案に対する賞金が、次の決定表で決められる。改善提案1と改善提案2に対する賞金の総額は何円か。

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


[改善提案]
改善提案1:改善額20万円、期間短縮3日
改善提案2:改善額5万円、期間短縮2週間
1,000
1,500
2,000
3,500
解答
解説 このような図を決定表(デジョンテーブル)といいます。当てはまるものをY(Yes)。当てはまらないものをN(No)としたときに、その列のXがついているものとする(場合によっては、複数も可)ことで、状況の整理などをすることができます。

改善提案1は、改善額10万円未満=N。期間短縮1週間未満=Y。よって、左から3番目に該当し、賞金1000円
改善提案2は、改善額10万円未満=Y。期間短縮1週間未満=N。よって、左から2番目に該当し、賞金1000円

よって、1000+1000で2000円となります。

問16 フラッシュメモリに関する記述として、適切なものはどれか。
高速であり、キャッシュなどに用いられる。
紫外線で全内容の消去ができる。
周期的にデータの再書込みが必要である。
ブロック単位で電気的に消去できる。
解答
解説 最近は、持ち運びに便利なUSBフラッシュメモリが良く流通しています。フラッシュメモリは、何度でも書き換えが可能なメモリです。リフレッシュが必要なのは、DRAMというメモリです。また、紫外線によるデータの消去をするのはEPROMで、電気的にデータを消去するのはEEPROMです。EEPROMを改良したのがフラッシュメモリになります

選択肢アは、SRAMの説明です。
選択肢イは、EPROMの説明です。
選択肢ウは、DRAMの説明です。(定期的な再書き込みをリフレッシュといいます。)

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

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

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

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

問18 内部割込みに分類されるものはどれか。
商用電源の瞬時停電などの電源異常による割込み
ゼロで除算を実行したことによる割込み
入出力が完了したことによる割込み
メモリパリティエラーが発生したことによる割込み
解答
解説 まず、割り込には大きく分けて内部割りこみと外部割り込みがあります。内部割り込はゼロによる除算に代表されるソフトウェア的な原因。外部割り込みは、入出力の完了や電圧異常などに代表されるハードウェア的な原因です。

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

問19 キャッシュメモリのアクセス時間及びヒット率と、主記憶のアクセス時間の組合せのうち、主記憶の実効アクセス時間が最も短くなるのはどれか。
画像(問19ans)を表示できません
解答
解説 すべてを計算してもよいのですが、今回はアクセス時間が同じでヒット率が低いという理由で、選択肢イとくらべて選択肢アを除外。選択肢エとくらべて選択肢ウを除外できます。よって、選択肢イと選択肢エだけを計算すれば十分です。

選択肢イ:10×0.7+70×0.3=7+21=28
選択肢エ:20×0.8+50×0.2=16+10=26

よって、26ナノ秒で選択肢エが最も高速だといえます。

問20 主記憶装置の高速化の技法として、主記憶を幾つかのアクセス単位に分割し、各アクセス単位をできるだけ並行動作させることによって、実効アクセス時間を短縮する方法を何というか。
仮想記憶
キャッシュメモリ方式
ダイレクトメモリアクセス
メモリインタリーブ
解答
解説 メモリインタリーブとは、主記憶を複数の独立したグループに分けて、各グループに交互にアクセスすることによって、主記憶へのアクセスの高速化を図るものです。以下の例ではアクセス幅が1の場合は3語分、アクセス幅が2の場合は6語分に同時にアクセスできます。

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

仮想記憶は、実メモリが少ない場合に、HDDの一部を仮想的に主記憶のように見せかけて、大きなプログラムを動作させたりする技術です。
キャッシュメモリ方式は、CPUのレジスタと主記憶との差を埋めるために、キャッシュメモリというものをおき、同じデータにアクセスする際に高速化する手法です。、
ダイレクトメモリアクセス(DMA)は、CPUを経由せずに、メモリとI/O間でデータを転送する方式をいいます。