平成18年度秋期 基本情報 問1−20 解答編
このページは
基本情報
(基本情報技術者試験)
の
解答と解説
のページです。
問題
だけで勉強したい方は目次へ戻ってください
問1
1バイトのデータで0のビット数と1のビット数が等しいもののうち、符号なしの2進数として見たときに最大となるものを、10進整数として表したものはどれか。
ア
120
イ
127
ウ
170
エ
240
解答
エ
解説
1バイトは8ビットなので、1と0がそれぞれ4つずつ現れるようにすればよいということになります。2進数でも左側に行くほど重み付けが大きくなるので、(11110000)が最大となります。よって、128+64+32+16=240となります。
符号がある場合は、最上位ビットが1の場合は負数となるので、(01111000)が最大となり120となります。
問2
数値を2進数で格納するレジスタがある。このレジスタに正の整数xを設定した後、“レジスタの値を2ビット左にシフトして、xを加える”操作をすると、レジスタの値はxの何倍になるか。ここで、シフトによるあふれ(オーバフロー)は、発生しないものとする。
ア
3
イ
4
ウ
5
エ
6
解答
ウ
解説
桁あふれのない正の整数の2進数は、左にnビットシフトすると2
n
倍されるという性質があります。(10進数でも34を340にすると10倍になるのと同じです)また、もともとの値を加えるということは、1倍を加えるということなので、2
2
+1で5倍になります。
問3
8ビットで表される符号なし2進数xが16の倍数であるかどうかを調べる方法として、適切なものはどれか。
ア
xと2進数00001111のビットごとの論理積をとった結果が0である。
イ
xと2進数00001111のビットごとの論理和をとった結果が0である。
ウ
xと2進数11110000のビットごとの論理積をとった結果が0である。
エ
xと2進数11110000のビットごとの論理和をとった結果が0である。
解答
ア
解説
16の倍数であるということは、16で割ったあまりが0であるという風に言い換えることができます。つまり、1〜15の値が存在しなければ16の倍数になります。よって、1−15を作るための下位4ビットがすべて0ならば16の倍数であるといえます。
そのために、下位4ビットと1(残りは0)との論理積をとることで下位4ビットを取り出すことができるので、それが0かどうかを調べることでわかります。
問4
次の24ビットの浮動小数点数形式で表現できる最大値を表すビット列を、16進数として表したものはどれか。ここで、この形式で表現される値は(−1)
s
×16
E-64
×0.Mである。
ア
3FFFFF
イ
7FFFFF
ウ
BFFFFF
エ
FFFFFF
解答
イ
解説
最大値になるとは、正の値で、指数部と仮数部が最も大きくなるようにすればいいことになります。よって、符号部(最上位ビット)が0、残りが全部1となる(7FFFFF)が最大となります。
問5
負数を2の補数で表す16ビットの符号付き固定小数点数の最小値を表すビット列を、16進数として表したものはどれか。
ア
7FFF
イ
8000
ウ
8001
エ
FFFF
解答
イ
解説
2進数を負の補数で表す場合の範囲は、−2
n-1
−1〜2
n-1
となります。よって、−32768となり、これを2進数に変換し、2の補数をとると8000
16
となります。
ここでは、もうひとつの考え方をしてみたいと思います。まず、
−1は0001
16
のビット反転をして1を加えるとFFFF
16
−2は0002
16
のビット反転をして1を加えるとFFFE
16
−3は0003
16
のビット反転をして1を加えるとFFFD
16
と1ずつ減っていくことがわかります。また、負数は最上位ビットが1であるので、最上位ビットが1でできる限り値を減らすと8000
16
になることが予想できます。
問6
浮動小数点形式で表現される数値の演算において、有効けた数が大きく減少するものはどれか。
ア
絶対値がほぼ等しく、同符号である数値の加算
イ
絶対値がほぼ等しく、同符号である数値の減算
ウ
絶対値の大きい数と絶対値の小さい数の加算
エ
絶対値の大きい数と絶対値の小さい数の減算
解答
イ
解説
まず、それぞれの誤差について下にまとめます。
アンダーフロー:演算結果が、扱える数値の最小値を超えることによって生じる誤差
オーバーフロー:演算結果が、扱える数値の最大値を超えることによって生じる誤差
打切り誤差:数表現のけた数に限度があるときに、計算を途中でやめることで起きる誤差
丸め誤差:数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差
けた落ち:値がほぼ等しい浮動小数点同士の減算において、有効けた数が大幅に減ってしまうことで起きる誤差
情報落ち:浮動小数点の加算において、一方の数値の下位のけたが欠落することで起きる誤差
情報落ちは絶対値の小さいものから計算することで回避できます。
けた落ちは式を変形するなどで回避することができます。
そのほかは、誤差が許容できるほどに大きな計算桁数を準備することで軽減できます。
情報落ちの実際の例は、1.1111−1.1110=0.0001のように有効桁数が減ってしまいます。
問7
男子3人、女子5人の中から3人を選ぶとき、男子が少なくとも1人含まれる選び方は何通りあるか。
ア
21
イ
30
ウ
46
エ
56
解答
ウ
解説
組み合わせ論に関する問題です。n人の中からm人を選ぶとき(順番を考えないとき)
n
C
m
と表記し、
n
C
m
=n!/(m!(n−m)!)となります。
解答法は以下の2つが考えられますが、Aでの解答の方が今回は簡単だと思うので、Aでといてみます。
@男子が1人の場合+男子が2人の場合+男子が3人の場合の和
A全部の組み合わせ−3人とも女子の場合
まず、すべての組み合わせは、
8
C
3
=8!/(3!(8−3)!)=8×7×6×5×4×3×2×1/(3×2×1×5×4×3×2×1)=8×7=56通り
3人とも女子の組み合わせは、
5
C
3
=5!/(3!(5−3)!)=5×4×3×2×1/(3×2×1×2×1)=10通り
よって、56−10=46通りとなります。
また、順番を考える順列は、
n
P
m
=n!/(n−m)!となります。
問8
次に示す手順は、列中の少なくとも一つは1であるビット列が与えられたときに、最も右にある1を残し、ほかのビットをすべて0にするアルゴリズムである。例えば、00101000が与えられたとき、00001000が求まる。aに入る論理演算はどれか。
手順1 与えられたビット列Aを符号なしの2進数と見なし、Aから1を引き、結果をBとする。
手順2 AとBの排他的論理和(XOR)を求め、結果をCとする。
手順3 AとCの[ a ]を求め、結果をAとする。
ア
排他的論理和(XOR)
イ
否定論理積(NAND)
ウ
論理積(AND)
エ
論理和(OR)
解答
ウ
解説
問題文を例に考えて見ましょう
A=00101000
B=00100111(A−1)
C=00001111(AとBの排他的論理和))
このときに、AとCで何らかの演算をとると00001000となります。
XORだと00100111
NANDだと11110111
ANDだと00001000
ORだと00101111
以上のことからANDであることがわかります。
問9
次の真理値表で、変数X、Y、Zに対する関数Fを表す式はどれか。ここで、“・”は論理積、“+”は論理和、
A
はAの否定を表す。
ア
X・Y+Y・
Z
イ
X・Y・
Z
+Y
ウ
X
・
Y
・Z+X・Y+Y・
Z
エ
X
・
Y
・Z+X・
Y
+
Y
・
Z
解答
ウ
解説
まず、出力が1となる組み合わせを書き出します。
@
X
・
Y
・Z
A
X
・Y・
Z
BX・Y・
Z
CX・Y・Z
AとBからY・
Z
BとCからX・Yを作ります。
@はまとめる事がないので、
X
・
Y
・Z+X・Y+Y・
Z
問10
長さ3の文字列c
1
c
2
c
3
の中には、長さ2以上の連続した部分文字列としてc
1
c
2
、c
2
c
3
及びc
1
c
2
c
3
の三つがある。長さ100の文字列c
1
c
2
・・・c
100
の中に、長さ10以上の連続した部分文字列が全部でいくつあるか求める式はどれか。
ア
1+2+3+・・・+88+89
イ
1+2+3+・・・+89+90
ウ
1+2+3+・・・+90+91
エ
1+2+3+・・・+98+99
解答
ウ
解説
元の文字列の中に長さ100は1個。99は2個。98は3個。・・・11は92個。10は91個あるので、1〜91間での合計となります。
問11
図で表される有限オートマトンで受理される文字列はどれか。
ア
01011
イ
01111
ウ
10111
エ
11110
解答
ウ
解説
このような有限オートマトンを特に、決定性有限オートマトン(DFA)といいます。まず、下のように各状態に名前をつけます。SはStartの略で初期状態を表します。GはGoalの略で受理状態を表します。
それでは、各選択肢を追跡していきます。
選択肢ア:S → S → A → S → A → B
選択肢イ:S → S → A → B → G → C
選択肢ウ:S → A → S → A → B → G
選択肢エ:S → A → B → G → C → C
この決定性有限オートマトンは、1が連続して4つ以上現れず、かつ1が3個続いて終わるようなものを受理します。
Aは1が1つ続いた状態。Bが2つ続いた状態。Gが3つ続いた状態。Cが1度でも4つ以上続いたデッド状態(一度入ると受理しない状態)です。
問12
四則演算の式の書き方には、演算子をオペランドの前に書く方法(前置記法)、オペランドの間に書く方法(中置記法)、オペランドの後に書く方法(後置記法)の3通りがある。図は、2分木で表現された式のたどり方と、各記法によって表される式を例示したものである。
各記法で式を書く手順の説明として、適切なものはどれか。
ア
前置記法:節から上に戻るときにそこの記号を書く
イ
中置記法:節に下りたときにそこの記号を書く。
ウ
後置記法:節から上に戻るときにそこの記号を書く。
エ
後置記法:葉ならばそこの記号を書いて戻る。演算子ならば戻るときに左括弧を書き、左の枝から右の枝に移るときに記号を書き、上に戻るときに右括弧を書く。
解答
ウ
解説
一般的に数学で利用するのは、中置記法ですが、コンピュータでは、前置記法(ポーランド記法)や後置記法(逆ポーランド記法)が括弧を使わずに利用でき、スタックで実装できるため利用されることが多いです。節から戻るときとは、子から親へ戻るときです。前置記法では、親から子。後置記法は子から親に戻るときに記号がおかれます。中置記法では括弧が必要となります。
問13
表は、配列を用いた連結セルによるリストの内部表現であり、リスト[東京、品川、名古屋、新大阪]を表している。このリストを[東京、新横浜、名古屋、新大阪]に変化させる操作はどれか。ここで、A(i,j)は表の第i行第j列の要素を表す。例えば、A(3,1)=“名古屋”であり、A(3,2)=4である。また、→は代入を表す。
解答
ウ
解説
このようなデータ構造を単方向リストといいます。つまり、1行目を考えると、『東京の次は、2行目』というのをあらわしています。この2列目をたどっていくことで、次々とデータをあらわしています。よって、リストを問題文のように変更するためには、東京の次を新横浜にし、新横浜の次を名古屋にすることで、変更できます。
つまり、東京の次(A(1,2))を新横浜(5)に変更し、新横浜の次(A(5,2))を(3)に変更します。ここでは、3という定数ではなく、間接的に変更しています。よって、先にA(1,2)を書き換えてしまうと、参照できなくなるので、新横浜を変更してから東京を変更するという流れになります。
問14
昇順に整列されたn個のデータが配列に格納されている。探索したい値を2分探索法で探索するときの、およその比較回数を求める式はどれか。
ア
log
2
n
イ
(log
2
n + 1)/2
ウ
n
エ
n
2
解答
ア
解説
2分探索は、1回の検索で探索範囲を半分にします。つまり、1探索できる個数は、1回で1/2。2回で1/4。3回で1/8・・・と範囲を狭められます。この探索回数をnとすると比較回数はlog
2
nとなります。(また、およそというのは、2
n
のデータサイズでなかった場合には近似になるためです。)
問15
次の規則にしたがって要素A[0]、A[1]、・・・、A[9]に正の整数kを格納する。16、43、73、24、85を順に格納したとき、85が格納される場所はどこか。ここでx mod yはxをyで割った剰余を返す。また、配列の要素はすべて0に初期化されている。
[規則]
(1) A[k mod 10] = 0ならば、k→A[k mod 10]とする。
(2) (1)で格納できないとき、A[(k+1) mod 10] = 0ならば、k→A[(k+1) mod 10]とする。
(3) (2)で格納できないとき、A[(k+4) mod 10] = 0ならば、k→A[(k+4) mod 10]とする。
ア
A[3]
イ
A[5]
ウ
A[6]
エ
A[9]
解答
エ
解説
順番に追いかけて行きます。
16:@により、A[6]に格納する。
43:@により、A[3]に格納する。
73:@では衝突が起こるので、Aにより、A[4]に格納する。
24:@では衝突が起こるので、Aにより、A[5]に格納する。
85:@、Aでは衝突するので、Bにより、A[9]に格納する。
よって、85はA[9]に格納されます。
問16
フラッシュメモリに関する記述として、適切なものはどれか。
ア
紫外線で全内容を消して書き直せるメモリである。
イ
データを速く読み出せるので、キャッシュメモリとしてよく用いられる。
ウ
不揮発性メモリの一種であり、電気的に全部又は一部分を消して内容を書き直せるメモリである。
エ
リフレッシュ動作が必要なメモリであり、主記憶に広く使われる。
解答
ウ
解説
最近は、持ち運びに便利なUSBフラッシュメモリが良く流通しています。フラッシュメモリは、何度でも書き換えが可能なメモリです。リフレッシュが必要なのは、DRAMというメモリです。また、紫外線によるデータの消去をするのはEPROMで、電気的にデータを消去するのはEEPROMです。EEPROMを改良したのがフラッシュメモリになります
選択肢アは、EPROMの説明です。
選択肢イは、SRAMの説明です。
選択肢エは、DRAMの説明です。
問17
図の論理回路において、A=1、B=0、C=1のとき、P、Q、Rの値の適切な組合せはどれか。
解答
ア
解説
1つずつ追いかけて行きます。
P=A AND B=1 AND 0=0
Q=P OR C=0 OR 1=1
R=NOT Q=NOT 1=0
よって、選択肢アが正解となります。
問18
次の図のうち、パイプライン制御の説明として適切なものはどれか。ここで、図中の各記号の意味は次のとおりとする。
F:命令呼び出し、D:解読、A:アドレス計算、R:オペランド呼び出し、E:実行
解答
ウ
解説
パイプラインとは、処理を少しずつずらして並列的に行うことで、処理を高速に行う処理をいいます。正解である選択肢ウは、選択肢アが従来の処理形態と比べてかなり長くなっています。選択肢エのようなものをスーパースケーラ(スーパースカラー)方式といいます。
問19
PCのCPUのクロック周波数に関する記述のうち、適切なものはどれか。
ア
クロック周波数のよってCPUの命令実行タイミングが変化する。クロック周波数が高くなるほど命令実行速度が上がる。
イ
クロック周波数によってLANの通信速度が変化する。クロック周波数が高くなるほどLANの通信速度が上がる。
ウ
クロック周波数によって磁気ディスクの回転数が変化する。クロック周波数が高くなるほど回転数が高くなり、磁気ディスクの転送速度が上がる。
エ
クロック周波数によってリアルタイム処理の割込み間隔が変化する。クロック周波数が高くなるほど割込み頻度が高くなり、リアルタイム処理の処理速度が上がる。
解答
ア
解説
CPUのクロックとは、CPUが行う命令の実行タイミングのようなものです。よって、クロック周波数が高いほど短い時間で処理ができるといえます。
問20
図に示す構成で、表に示すようにキャッシュメモリと主記憶のアクセス時間だけが異なり、ほかの条件は同じ2種類のCPU XとYがある。
あるプログラムをCPU XとYでそれぞれ実行したところ、両者の処理時間は等しかった。このとき、キャッシュメモリのヒット率は幾らか。ここで、CPU処理以外の影響はないものとする。
ア
0.75
イ
0.90
ウ
0.95
エ
0.96
解答
イ
解説
キャッシュメモリは、CPUのレジスタと主記憶とのアクセス速度の差を埋めるために用いられるものです。
ここでヒット率をaとすると
CPUXのアクセス時間=40×a+400(1−a)
CPUYのアクセス時間=20×a+580(1−a)
ここで、2つのCPUのアクセス時間は等しいので
40×a+400(1−a)=20×a+580(1−a)
20a=180(1−a)
20a=180−180a
200a=180
a=180/200=0.9
よって、ヒット率は0.9であるといえます。