応用情報技術者 ― 基礎理論 問題一覧・解説
全15問の問題文・選択肢・正解・解説を掲載しています。 フラッシュカード形式で実際に解いてみたい方は「練習する」ボタンをご利用ください。
🎴 フラッシュカードで練習する(15問)2進数 1011.011 を10進数で表したものはどれか。
📝 解説
2進数を10進数に変換するコツは「各桁に位の重みをかけて足し合わせる」です。電気のスイッチに例えると、右から1円・2円・4円・8円の硬貨に対応するスイッチが並んでいるイメージです。整数部「1011」は、1×8+0×4+1×2+1×1=11。小数部「.011」は、0×0.5+1×0.25+1×0.125=0.375。合計すると11.375が正解です。小数部の位の重みは「2⁻¹=0.5、2⁻²=0.25、2⁻³=0.125」と半分ずつ小さくなります。誤答の「11.625」は小数部を0.5+0.125と間違えたケース、「13.375」は整数部を13と誤ったケースです。2進数変換は試験の最頻出テーマなので、繰り返し練習して確実に解けるようにしましょう!
集合A={1, 2, 3, 4}、B={3, 4, 5, 6}のとき、差集合 A - B はどれか。
📝 解説
差集合A-Bとは「Aにはあるが、Bにはない要素だけを集める」操作です。駅の乗降客リストで考えると、「A駅で乗った人の名簿」から「B駅でも乗った人を除いた残り」がA-Bのイメージです。A={1,2,3,4}、B={3,4,5,6}なら、BにもあるのはAの3と4です。それを除くと{1,2}が残り、これが正解。混同しやすい概念として、A∩B(積集合=両方に含まれる{3,4})、A∪B(和集合=どちらかに含まれる{1,2,3,4,5,6})があります。誤答の「{5,6}」はB-A(方向が逆)、「{3,4}」はA∩B(積集合)です。「差集合はBの要素を引き算する」と覚えれば間違えません!
逆ポーランド表記法で「A B + C *」と表現される式を、通常の記法(中置記法)で表したものはどれか。
📝 解説
逆ポーランド記法(後置記法)は「演算子がオペランドの後に来る」表記法で、コンピュータがスタックを使って計算しやすい形式です。スーパーのレジに例えると、商品を全部カゴに入れてから最後に「合計して!」と告げる感じです。「A B + C *」はスタックで処理すると、①AとBをpush→「+」でpopして加算し結果をpush→②Cをpush→「*」でpopして乗算。結果は(A+B)×Cです。「A+(B×C)」は後置記法で「A B C * +」に対応し、乗算が先になるため別の式です。逆ポーランド記法は括弧が不要でコンパイラの中間コードにも使われています。通常の中置記法との変換練習を積み重ねましょう!
再入可能(リエントラント)プログラムの性質として、適切なものはどれか。
📝 解説
リエントラント(再入可能)とは「複数のタスクが同時に呼び出しても、それぞれが互いに干渉せず正しく動ける」性質です。コールセンターで例えると、複数のオペレーターが同じマニュアルを使いながら、それぞれ別の顧客と独立した会話をできる状態に似ています。実現のポイントはグローバル変数や共有データを使わず、各呼び出しのデータをスタックやローカル変数で独立管理することです。誤答を整理すると「自分自身を呼び出せる」は再帰(リカーシブ)、「ロードし直さずに再実行できる」は再使用可能(リユーザブル)、「どのアドレスに配置しても動く」は再配置可能(リロータブル)の性質です。この4つの違いはよく出るので整理して覚えましょう!
パリティチェックの説明として、適切なものはどれか。
📝 解説
パリティチェックは「1のビット個数が偶数か奇数かを確認する」シンプルな誤り検出方式です。列車の車掌が乗客数の偶奇を記録しておき、後で確認して奇偶が変わっていれば「誰かが乗り降りした」と気づくイメージです。データのビット列に1ビットの検査用ビット(パリティビット)を付加して送り、受信側で1の個数を再確認します。1ビットの誤りは検出できますが、2ビット同時エラーは検出できず、誤り訂正もできません。誤り訂正ができるのはハミング符号です。誤答の「水平・垂直方向の検査」はブロックチェックコード、「生成多項式を使う」はCRC(巡回冗長検査)の説明です。「パリティ=1ビット誤り検出のみ・訂正不可」がポイントです!
ハフマン符号化の説明として、適切なものはどれか。
📝 解説
ハフマン符号化は「よく使う文字には短い符号、めったに使わない文字には長い符号を割り当てる」可逆圧縮アルゴリズムです。電話の短縮ダイヤルに例えると、毎日かける自宅には「1番」という短い番号、たまにしかかけない場所には「45番」という長い番号を割り当てる発想と同じです。出現頻度が高い文字ほど短い符号を使うことで、データ全体の平均符号長を最小化します。ハフマン木(二分木)を頻度の低いものから順に構築して符号を決定します。圧縮後に完全に元のデータへ戻せる「可逆圧縮」である点が特徴です。ZIP・gzip等の圧縮技術の基礎として使われています。誤答の「辞書ベースの符号化」はLZ法(LZWなど)の特徴です!
待ち行列モデル(M/M/1)において、利用率ρが大きくなると、平均待ち時間はどうなるか。
📝 解説
M/M/1待ち行列モデルはコンビニのレジで考えるとわかりやすいです。利用率ρ(ロー)は「サービス窓口の忙しさ」を表し、0から1の値を取ります。ρ=0.5なら行列はほとんどできませんが、ρ=0.9になると急に行列が伸び始め、ρ=0.99では待ち時間が爆発的に増大します。平均待ち時間はρ/(μ×(1-ρ))という式で計算され、ρが1に近づくと分母の(1-ρ)がほぼゼロとなり「急激に長くなる」のが正解の根拠です。ρ=0.9と0.99では、待ち時間が約10倍違います。「一定値に収束する」「徐々に短くなる」はいずれも間違い。これがサーバのCPU使用率を70〜80%以内に設計する理由でもあります!
オートマトンの説明として、適切なものはどれか。
📝 解説
オートマトンは「有限個の状態と、入力によって変わる状態遷移を持つ数学的モデル」です。駅の自動改札機がまさにその典型例です!改札機には「切符未投入・検証中・通過可能・エラー」という状態があり、切符の種類(入力)に応じて次の状態へ遷移します。コンピュータサイエンスの基礎理論として、正規表現の実装やコンパイラの字句解析部分に活用されています。誤答の「再帰的に関数を呼び出す」はプログラム再帰の話、「論理式の真偽を判定する」は論理回路の話、「データをツリー構造で管理する」はデータ構造の話です。有限オートマトン(FA)には決定性(DFA)と非決定性(NFA)があり、どちらも認識できる言語の能力は同等です!
BNF(Backus-Naur Form)は何を記述するために使われるか。
📝 解説
BNF(バッカス・ナウア記法)はプログラム言語の文法規則を形式的に定義する「文法の文法」です。国語の授業で「文=主語+述語」と定義するように、「::=」を使って非終端記号と終端記号で構文規則を記述します。例:〈数字〉::= 0|1|2|…|9。非終端記号(山括弧で囲む)はさらに分解できる概念、終端記号は実際の文字です。コンパイラの構文解析器(パーサー)を設計するための仕様記述に必須で、プログラム言語設計者の「設計図」として使われています。XMLやJSONの仕様書にもBNFやEBNF(拡張BNF)が使われています。誤答の「プロセスの優先順位」「データの格納構造」「ネットワーク手順」はいずれも別の分野の話です!
標本化(サンプリング)の間隔を短くすると、デジタル化されたデータはどうなるか。
📝 解説
サンプリング(標本化)は「連続したアナログ信号を一定間隔でデジタル値として取得する」処理です。水位計で川の水位を測るとき、1時間に1回より1分に1回のほうが細かい変動を捉えられますね。サンプリング間隔を短く(=周波数を高く)すると元の信号により忠実なデジタルデータが得られますが、サンプル数が増えるのでデータ量も増加します。ナイキストの定理では「元の信号の最高周波数の2倍以上のサンプリング周波数が必要」とされています。CDの44.1kHzは人間の聴覚上限20kHzの約2.2倍に設定されているためです。「元の音波により忠実になり、データ量は増加する」が正解です。誤答の「再現性が低くなる」「音量だけ大きくなる」「周波数成分がカットされる」はどれも事実と逆です!
2進数の11010101を16進数に変換すると?
📝 解説
2進数を16進数に変換するには「4ビットずつ区切る」のがコツです!電話番号を市外局番と市内番号でブロックに分けて読むのと同じ感覚です。11010101を4ビットずつに分けると「1101|0101」になります。前半の1101₂は8+4+0+1=13で、16進数ではDです(10=A、11=B、12=C、13=D、14=E、15=F)。後半の0101₂は0+4+0+1=5で、そのまま5です。組み合わせると「D5」が正解。誤答のB5は1011|0101(13をBと間違えた)、C5は1100|0101(12と誤算した)に対応します。16進数変換は4ビットのグループをそれぞれ計算するだけ!慣れれば暗算できるようになりますよ。「1101→D、0101→5」という対応を繰り返し練習して定着させましょう!
補数表現において、8ビットの2の補数で表現できる最小の値は?
📝 解説
2の補数表現はコンピュータが負の数を扱うための巧みな仕組みです。アパートに例えると、8ビットという1棟256部屋のアパートがあるとして、0〜127号室は「正の数専用フロア」、128〜255号室は「負の数専用フロア」として使うイメージです。最上位ビット(MSB)が0なら正、1なら負を表す符号ビットです。8ビットの表現範囲は-2^7〜2^7-1、すなわち-128〜+127の256種類。最小値-128は2進数で「10000000」(最上位のみ1で残り全部0)となります。nビットの2の補数の最小値は常に-2^(n-1)ですから、8ビットなら-2^7=-128です。+127(01111111)に1を足すと繰り上がりで10000000=-128になる「折り返し」も理解しておくと完璧です!誤答の-127は最大値側の境界と混同したケース、-256は9ビット相当、-64は7ビット相当の最小値です。
浮動小数点数において、仮数部のビット数が多いほど何が向上するか?
📝 解説
浮動小数点数は「符号部・指数部・仮数部」の3つのパーツで構成されています。科学の世界で使う「3.14 × 10²」という表記と同じ発想です。この場合、3.14が仮数部(数値の精度を担う部分)、2が指数部(どのくらい桁をずらすかを担う部分)に相当します。仮数部のビット数が多いほど有効桁数(精度)が増えます。例えば単精度float(32ビット)の仮数部は23ビットで約7桁の精度、倍精度double(64ビット)の仮数部は52ビットで約15桁の精度があります。一方で指数部のビット数が多いほど表現できる値の絶対値の範囲(最小値・最大値)が広がります。「仮数部→精度(有効桁数)」「指数部→範囲(絶対値の大きさ)」というセットで覚えると試験の引っかけにも対応できます。演算速度はハードウェアの設計に依存し、仮数部のビット数とは直接関係ありません!
論理演算においてAとBのEXOR(排他的論理和)の真理値表で、A=1かつB=1のとき出力は?
📝 解説
XOR(排他的論理和)は「2つの入力が異なるとき1、同じとき0を出力する」演算です。改札機の乗降チェックに例えると「入場済みの状態(1)でもう一度入場(1)しようとしたら、同じ状態なのでエラー(0)になる」イメージです。真理値表はA=0,B=0→0、A=0,B=1→1、A=1,B=0→1、A=1,B=1→0。問題のA=1、B=1は「同じ値」なので出力は0が正解です。XORは「異なるとき1」と覚えましょう!OR(論理和)とよく混同されますが、ORはA=1,B=1のとき1(どちらかが1なら1)で、XORだけA=1,B=1のとき0になる点が違います。XORは暗号技術(ビット演算)、誤り検出(パリティ)、差分検出など情報処理の様々な場面で活躍します。「Exclusive(排他的)=同じなら0、違うなら1」という名前の意味から理解するとぐっと覚えやすくなりますよ!
情報量の単位であるビット(bit)の語源は何か?
📝 解説
ビット(bit)という言葉はどこから来たのでしょう?実はBinary digit(バイナリ ディジット=2進数の桁)を縮めた言葉です。電灯のスイッチのように「ON(1)かOFF(0)か」の2通りしか状態を持てない情報の最小単位がビットです。BinaryはBi(2つ)という語源から来ており、digitは「指」→「数字」を意味します。8ビットを束ねると1バイト(Byte)になります。1バイトは2の8乗=256種類の値を表現でき、英語なら1文字を表すのにちょうどよいサイズとして普及しました。誤答のBasic integer、Byte integer、Boolean inputはどれも正式な用語ではなく、語呂合わせで作られた架空の選択肢です。情報量の単位はbit(ビット)→Byte(バイト)→KB→MB→GB→TBと1000倍または1024倍で増えていく階段構造になっています。「ビット=Binary digit」という語源は一度覚えたら忘れません!