平成18年度春期 基本情報 問1−20 解答編
このページは
基本情報
(基本情報技術者試験)
の
解答と解説
のページです。
問題
だけで勉強したい方は目次へ戻ってください
問1
16進小数2A.4Cと等しいものはどれか。
ア
2
5
+2
3
+2
1
+2
-2
+2
-5
+2
-6
イ
2
5
+2
3
+2
1
+2
-1
+2
-4
+2
-5
ウ
2
6
+2
4
+2
2
+2
-2
+2
-5
+2
-6
エ
2
6
+2
4
+2
2
+2
-1
+2
-4
+2
-5
解答
ア
解説
まず、2A.4Cを2進数に変換すると(101010.01001100)となります。これの1の部分をを見ると、2
5
,2
3
,2
1
,2
-2
,2
-5
,2
-6
となっているので、これを足し合わせたものが2進数で表現したものとなります。
問2
次の計算は何進数で成立するか。
131−45=53
ア
6
イ
7
ウ
8
エ
9
解答
イ
解説
1つずつ順番に計算してももちろんよいのですが、少し理論的に考えて見ます。答えの1の桁をみてみると、11−5=3(11は上の位からの繰り下がり)となっています。ここは11=3+5となっています。つまり、10進数で8になる値が、x進数で11になっています。これは、8で2つ値が繰り上がったので、6まで表示できるということになります。よって、0〜6までを使う7進数であることがわかります。
問3
負数を2の補数で表現する固定小数点表示法において、nビットで表現できる整数の範囲はどれか。ここで、小数点の位置は最下位ビットの右とする。
ア
−2
n
〜2
n-1
イ
−2
n-1
−1〜2
n-1
ウ
−2
n-1
〜2
n-1
−1
エ
−2
n-1
〜2
n-1
解答
ウ
解説
2の補数とは、一般的に負数を表すのに用いられる手法で、引き算を足し算で表現できるためよく利用されます。2の補数は、負数をビット反転したものに+1することで実現できます。+1するのは、+0と−0に相当するものが発生してしまい、1ビット無駄になるためです。(+1をしないで、ビット反転だけをしたものを1の補数といいます。)
まず、補数を使わない場合は、0〜2
n
−1
つぎに、1の補数を取ったものは、−2
n-1
−1〜2
n-1
−1
最後に、2の補数を取ったものは、−2
n-1
〜2
n-1
−1
問4
数値が図に示す16ビットの浮動小数点形式で表すとき、10進数0.25を正規化した表現はどれか。ここでの正規化とは、仮数部の最上位けたが0にならないように指数部と仮数部を調節する操作とする。
解答
ウ
解説
まずは、0.25を2進数に変換すると0.01となります。ここで仮数部の最上位が0なので、1ビット左にシフトし0.1×2
-1
とします。(仮数部は、小数点の右側部分なので、1×2
-2
ではないことに注意してください)
あとは、-1を4ビットの2の補数で表現すると、0001(+1) → 1110(ビット反転) → 1111(2の補数)となります。
問5
浮動小数点数表示の仮数部が23ビットであるコンピュータで計算した場合、情報落ちが発生する計算式はどれか。ここで、()
2
内の数は2進数で表示されている。
ア
(10.101)
2
×2
-16
−(1.001)
2
×2
-15
イ
(10.101)
2
×2
16
−(1.001)
2
×2
16
ウ
(1.01)
2
×2
18
+(1.01)
2
×2
-5
エ
(1.001)
2
×2
20
+(1.1111)
2
×2
21
解答
ウ
解説
コンピュータ上で値を扱う場合には、誤差という問題があります。これは、真の値を表現しきれないために近似ということをするために、おきるものです。
けた落ち:値がほぼ等しい浮動小数点同士の減算において、有効けた数が大幅に減ってしまうこと
オーバフロー:扱える数値の最大値を超えることによって生じる誤差(扱える最小値を下回ることによる誤差をアンダーフローといいます)
丸め誤差:数表現のけた数に限度があるとき、最小のけたより小さい部分について四捨五入、切上げ又は切捨てを行うことによって生じる誤差
情報落ち:浮動小数点の加算において、一方の数値の下位のけたが欠落すること
よって、指数部が18と-5で23ビットの差があるので、仮数部の値が保障されないことがわかります。
問6
最上位をパリティビットとする8ビット符号において、パリティビット以外の下位7ビットを得るためのビット演算はどれか。
ア
16進数0FとのANDをとる。
イ
16進数0FとのORをとる。
ウ
16進数7FとのANDをとる。
エ
16進数FFとのXOR(排他的論理和)をとる。
解答
ウ
解説
ビット演算に関するもので、ネットワークのマスク処理等とかかわりが深い問題です。
代表的なビット演算を下にまとめます。
ビットと1の論理積をとるとビットが残ります。
ビットと0の論理和をとるとビットが残ります。
ビットと1の論理和をとると1になります。
ビットと0の論理積をとると0になります。
ビットと1の排他的論理和をとると、ビットの反転を取り出せます。
問7
次のベン図の網掛け部分(■)の集合を表す式はどれか。個々で、X∪YはXとYの和集合、X∩YはXとYの積集合、
X
はXの補集合を表す。
ア
(A∩B∩C)
∩B
イ
(A∪B)∩
C
ウ
(
A
∩B∩C)∪(A∩B∩
C
)
エ
A∪B∪C
解答
ウ
解説
まず、日本語で書いてみると、『AでありBでありCでない部分』と『AでなくBでありCである部分』です。これを論理式に直すと、(A∩B∩
C
)∪(
A
∩B∩C)となります。
問8
次の表はJISコード表の一部である。二つの文字“A”と“2”をこの順にJISコードで表したものはどれか。
ア
00010100 00100011
イ
00110010 01000001
ウ
01000001 00110010
エ
01000010 00110010
解答
ウ
解説
図は、16進数2桁で1つの文字を表しています。よって、Aは(41)、2は(32)となっています。これを2進数にしてつなげると、01000001 00110010となります。b
8
が上位ビット(左側)でb
1
が下位ビット(右側)であることに注意してください。
問9
次の表は、文字列を検査するための状態遷移表である。検査では、初期状態をaとし、文字列の検査中に状態がeになれば不合格とする。
解答群で示される文字列のうち、不合格となるものはどれか。ここで、文字列は左端から検査し、解答郡中の△は空白を表す。
ア
+0010
イ
−1
ウ
12.2
エ
9.△
解答
ウ
解説
選択肢をひとつずつ追っていきます。
選択肢ア:a → c → b → b → b → b
選択肢イ:a → c → b
選択肢ウ:a → b → b → d → e
選択肢エ:a → b → d → a
よって、eで終わる選択肢ウが正解となります。
問10
後置表記法(逆ポーランド表記法)では、例えば、式Y=(A−B)×CをYAB−C×=と表現する。次の式を後置表記法で表現したものはどれか。
Y=(A+B)×(C−(D÷E))
ア
YAB+CDE÷−×=
イ
YAB+C−DE÷×=
ウ
YAB+EDC÷−×=
エ
YAB+CD−E÷×=
解答
ア
解説
逆ポーランド記法とは、後置記法とも呼ばれ、演算子を対象の後ろに記述する手法です。スタックを使うことで実現でき、括弧が不要なのが特徴です。
優先度の高い部分から順に逆ポーランド記法に変換して行きます。
@A+BとD÷Eを変換する
Y=(AB+)×(C−DE÷)
AC−DE÷を変換する
Y=(AB+)×(CDE÷−)
BAB+とCDE÷−を変換する
Y=AB+CDE÷−×
C『=』を変換する
YAB+CDE÷−×=
問11
正三角形の内部の点から、各辺に下ろした垂線の長さの和は一定である(図1参照)。三角グラフは、この性質を利用して、三つの辺に対応させた要素の割合を各辺への垂線の長さとして表したグラフである。図2の三角グラフは、3種類のソフトについて、A〜Dの4人の使用率を図示したものである。正しい解釈はどれか。
ア
Aさんは、ワープロソフトだけでを利用している。
イ
Bさんは、ほかのソフトに比べて、表計算ソフトの使用率が高い。
ウ
Cさんは、データベースソフト、表計算ソフト、ワープロソフトの順に使用率が高い。
エ
Dさんは、表計算ソフトを使用していない。
解答
イ
解説
擬似的なレーダーチャートのようなグラフの読み取りに関する問題です。
三角形の辺の垂線の長さが長いほど、使用しているという意味です。つまり、頂点にあるものは、その反対側の辺のソフトしか使っていないことになります。これを踏まえて各選択肢の内容を見ていきます。
選択肢ア:Aさんは、ワープロソフトを使用していません。
選択肢イ:Bさんは、最も表計算ソフトを使用しています。(正解)
選択肢ウ:Cさんは、ワープロソフトの使用率が高く、ほかのソフトは少ししか使用していません。
選択肢エ:Dさんは、表計算ソフトしか使用していません。
使用している。していないが逆にならないように気をつけましょう
問12
空の状態のキューとスタックの二つのデータ構造がある。次の手続きを順に実行した場合、変数xに代入されるデータはどれか。ここで、
データyをスタックに挿入することをpush(y),
スタックからデータを取り出すことをpop(),
データyをキューに挿入することをenq(y),
キューからデータを取り出すことをdeq(),
とそれぞれ表す。
push(a)
push(b)
enq(pop())
enq(c)
push(d)
push(deq())
x←pop()
ア
a
イ
b
ウ
c
エ
d
解答
イ
解説
まず、二つのデータ構造を確認します。
それでは、ひとつずつ追いかけていきます。
@push(a)
スタック:a
キュー:空
Apush(b)
スタック:a,b
キュー:空
Benq(pop())
スタック:a
キュー:b
Cenq(c)
スタック:a
キュー:b,c
Dpush(d)
スタック:a,d
キュー:b,c
Epush(deq())
スタック:a,d,b
キュー:c
Fx←pop()
スタックの最後に詰まれたb
問13
6個の数値180、315、282、410、645、525を並べ替える。手順1〜4は途中までの手順を示したものである。手順4まで終わったときの結果はどれか。
手順1 並びの左側から順に、数値の1の位の値によって0〜9のグループに分ける。
手順2 次に0のグループの数値を左側から順に取り出して並べ、その右側に1のグループ、以下順に2〜9のグループの数値を並べていく。
手順3 手順2で得られた数値の並びの左側から順に、数値の10の位によって0〜9のグループに分ける。
手順4 手順2と同様に、0のグループの数値から順に並べる。
ここで、グループ内では、処理が行われた数値を左側から順に並べるものとする。
ア
180、282、315、410、525、645
イ
315、410、525、180、282、645
ウ
410、315、525、645、180、282
エ
645、525、410、315、282、180
解答
ウ
解説
このようなソート法を基数ソートといいます。
手順1
0のグループ:180,410
2のグループ:282
5のグループ:315,645,525
手順2
180,410,282,315,645,525
手順3
1のグループ:410,315
2のグループ:525
5のグループ:645
8のグループ:180,282
手順4
410,315,525,644,180,282
この後、100の位についても行うことでソートが完了します。
問14
昇順に整列済の配列要素A(1)、A(2)、・・・、A(n)から、A(m)=kとなる配列要素A(m)の添字mを2分探索法によって見つける処理を図に示す。終了時点でm=0の場合は、A(m)=kとなる要素は存在しない。図中のaに入る式はどれか。ここで、/は、小数点以下を切り捨てる除算を表す。
ア
(x+y) → m
イ
(x+y)/2 → m
ウ
(x−y)/2 → m
エ
(y−x)/2 → m
解答
イ
解説
一般的な2分探索に関する問題です。2分探索を行うデータはソートされていることが前提です。
xが探索範囲の下限、yが探索範囲の上限をあらわしています。mが探索範囲の中間をあらわしています。
よって、探索値<mだった場合は、探索範囲は下半分。探索値>mだった場合は、探索範囲は上半分となります。この時にこのmをどうやって更新するかという問題です。判定の後に上限や下限が更新されるので、xとyを足して2で割った値が中間となります。
問15
次の流れ図は、シフト演算と加算の繰返しによって2進数の乗算を行う手順を表したものである。この流れ図中のa、bの処理の組合せとして、正しいものはどれか。ここで、乗数と被乗数は符号なしの16ビットで表される。X、Y、Zは32ビットのレジスタであり、けた送りには論理シフトを用いる。
解答
ア
解説
シフトされたYの最下位ビットが1だった場合は、乗算をする必要があり、0だった場合は、何もする必要がありません。また、被乗数Xを左に1ビットシフトし、乗数を右に1ビットシフトすることで桁をあわせていきます。
235×321を計算するときに、
5×321
3×3210
2×32100のようにしていると考えるとわかりやすいかもしれません。
問16
NAND回路による次の組合せ回路の出力Zを表す式はどれか。ここで、
ア
X・Y
イ
X+Y
ウ
X+Y
エ
X・Y
解答
イ
解説
NANDに同じ値を入力すると、下にようになり、入力の否定が出力されます。
0,0 → 1
1,1 → 0
つまり、
X
と
Y
のNANDであるといえます。
これをド・モルガンの定理をつかって変換すると、X+Yとなります。
問17
プロセッサにおけるパイプライン処理方式を説明したものはどれか。
ア
単一命令を基に、複数のデータに対して複数のプロセッサが同期をとりながら並列的にそれぞれのデータを処理する方式
イ
一つのプロセッサにおいて、単一の命令に対する実行時間をできるだけ短くする方式
ウ
一つのプロセッサにおいて、複数の命令を少しずつ段階をずらしながら同時実行する方式
エ
複数のプロセッサが、それぞれ独自の命令を基に複数の命令を処理する方式
解答
ウ
解説
パイプラインとは、下の図のように命令の段階を少しずつずらして行う方式です。なお各段を多重化したスーパースケーラ(スーパスカラ)方式というのもあります。
なお、選択肢アはSIMD(並列性におけるのフリンの分類の一つ)、選択肢イはRISC(プロセッサ設計の一種)、選択肢エはMIMD(並列性におけるのフリンの分類の一つ)
問18
コンピュータの命令実行順序として、適切なものはどれか。
ア
オペランド読出し → 命令の解読 → 命令フェッチ → 命令の実行
イ
オペランド読出し → 命令フェッチ → 命令の解読 → 命令の実行
ウ
命令の解読 → 命令フェッチ → オペランド読出し → 命令の実行
エ
命令フェッチ → 命令の解読 → オペランド読出し → 命令の実行
解答
エ
解説
プログラム内蔵方式での命令の実行は、まず大きく分けて、フェッチ(取り出し)とエグゼキューション(実行)に分けられます。詳しく分けると、下のようになります。
フェッチサイクル
@命令実行番地の計算
A命令の取り出し(フェッチ)
エグゼキューションサイクル
@命令の解読
A必要なデータを集める
B命令の実行
C結果の格納
問19
あるベンチマークテストプログラムの命令ごとの出現頻度と、これを実行するプロセッサの実行クロック数を表に示す。このベンチマークテストプログラムにおけるCPI(Clocks Per Instruction)は幾らか。
ア
0.48
イ
0.69
ウ
2.10
エ
2.67
解答
ウ
解説
CPIは1命令あたりのクロック数のことです。これは、クロック数に出現頻度の重み付けをしたものとなります。
0.5×1+0.3×2+0.2×5=0.5+0.6+1.0=2.1となります。
問20
50MIPSのプロセッサの平均命令実行時間は幾らか。
ア
20ナノ秒
イ
50ナノ秒
ウ
2マイクロ秒
エ
5マイクロ秒
解答
ア
解説
MIPS(Million Instructions Per Second)は1秒間に何百万個の命令が実行できるかという指標です。つまり、実行時間は1/1秒間の実行時間(つまり逆数)となります。
よって、1/(50×10
6
) = 1/50×1/10
6
つまり、0.2×10
-6
= 20×10
-9
つまり、20ナノ秒となります。