資格道場 › レッスン一覧 › 基礎理論
基礎理論・8/13・12分

データ圧縮とアナログ信号のディジタル化

ゴール

ハフマン符号表の空欄を、ほかの符号と食い違わないように埋められるようになる。PCMの転送速度からサンプリング間隔(マイクロ秒)を計算し、A/D変換とランレングス符号化の用語問題にも迷わず答えられるようになる。

PCMの計算問題は、本試験と免除試験を合わせて7回、ほぼ同じ数字のまま出題されています。解き方を一度覚えればそのまま得点できる問題です。圧縮もA/D変換も、スマホで音楽を聴く、センサーの値をアプリで見るといった日常的な仕組みを支える基礎です。

このレッスンで稽古する(用語チェック・過去問)

結論:このレッスンで覚える4つ

  • PCMの間隔計算:転送速度 ÷ 1回あたりのビット数 = 1秒あたりのサンプル数。その逆数がサンプリング間隔です(64,000 ÷ 8 = 8,000回/秒 → 1/8,000秒 = 125マイクロ秒)。
  • ハフマン符号:よく出る文字には短い符号を、まれな文字には長い符号を割り当てます。どの符号も、ほかの符号の書き出し部分と一致してはいけません。
  • ランレングス符号化:「AAAAA」を「5A」のように、同じ文字の連続を回数と文字の組に置き換える方式です。
  • A/D変換:連続したアナログの値を、コンピュータが計算できる飛び飛びの数値に変える処理です。ディジタル化してから計算すると、雑音・温度・部品のばらつきの影響を受けにくくなります。

PCM:音を数値にする3ステップ

PCM(パルス符号変調)は、音声などのアナログ信号を数値の列に変える代表的な方式です。手順は「標本化 → 量子化 → 符号化」の3つです。

flowchart LR
  A["アナログ音声(連続した波)"] --> B["標本化:一定間隔で値を拾う"]
  B --> C["量子化:拾った値を段階に丸める"]
  C --> D["符号化:段階の番号を2進数にする"]

パラパラ漫画にたとえると、標本化は「1秒を何コマに分けて描くか」を決めることです。量子化は「1コマの絵を何色で塗るか」、つまり何ビットで表すかを決めることにあたります。

用語 何を決めるか 試験での数字の例
標本化(サンプリング) 1秒間に何回値を拾うか 8,000回/秒
サンプリング間隔 値を拾ってから次に拾うまでの時間 125マイクロ秒
量子化 1回の値を何段階・何ビットで表すか 8ビット(256段階)
符号化 段階の番号を0と1の列にすること —

計算の公式:転送速度(ビット/秒)= 1秒あたりのサンプル数 × 1サンプルのビット数。サンプリング間隔は「1 ÷ 1秒あたりのサンプル数」です。

単位も確認しておきましょう。**1マイクロ秒 = 100万分の1秒(0.000001秒)**です。秒をマイクロ秒に直すには、1,000,000を掛けます。

標本化:一定間隔で値を拾う1秒に8,000回時間125マイクロ秒1回の値は8ビット(256段階)011010018ビット × 8,000回/秒= 64,000ビット/秒間隔=1÷8,000秒=125マイクロ秒
音の波から125マイクロ秒ごとに値を拾い、1回を8ビットで表すと、1秒で8,000回×8ビット=64,000ビットになる。

A/D変換と、ディジタル化してから計算する利点

A/D変換は、アナログ(Analog)の値をディジタル(Digital)の値に変える処理です。温度センサーの連続的な電圧を、マイコン(小型のコンピュータ)が計算できる数値に変えるのが典型的な使い方です。

変換 向き 例
A/D変換 アナログ → ディジタル 温度センサーの値をマイコンに取り込む
D/A変換 ディジタル → アナログ 保存した音のデータをスピーカーで鳴らす
パラレル/シリアル変換 複数本の線で同時に送るか、1本の線で順番に送るかを切り替える マイコン内部のデータ転送

ディジタル化してから計算する利点は、計算結果が部品の精度・温度変化・外から入る雑音の影響を受けにくいことです。ただし、どんな誤差もなくなるわけではありません。変換するときの誤差、計算の丸め誤差、処理にかかる時間(遅延)は残ります。

温度センサーの値を計算する2つの道アナログのまま計算温度センサーアナログ回路で計算雑音・温度・部品のばらつきで結果がずれやすいA/D変換してから計算センサーA/D変換マイコンで計算連続(アナログ)飛び飛び(ディジタル)数値なので雑音などの影響を受けにくいただし変換誤差・丸め誤差・遅延は残る
アナログのまま計算すると雑音や部品の影響で結果がずれやすい。A/D変換して数値で計算すれば影響を受けにくくなるが、変換誤差・丸め誤差・遅延は残る。

圧縮:ハフマン符号とランレングス符号化

どちらも、データを元どおりに戻せる可逆圧縮の方式です。試験では、この2つの違いを問われます。

方式 アイデア 向いているデータ
ハフマン符号 出現頻度が高い文字ほど短い符号にする(可変長符号) 文字ごとの出現頻度に偏りがあるデータ
ランレングス符号化 同じ文字の連続を「回数+文字」に置き換える 白や黒が長く続く画像(FAXなど)

ハフマン符号には「どの符号も、ほかの符号の書き出し部分と一致しない」というルールがあります(接頭語条件)。たとえば「10」という符号があるときに「101」も使うと、受信側は「10」の時点で区切ってよいのか判断できなくなります。

符号表を作ると、最も出現頻度の低い2文字は同じ長さになり、最後の1ビットだけが異なる符号になります。

なお、EBCDICは文字コード(文字を数値に対応させる表)、巡回符号は前のレッスンで扱ったCRCの仲間で、誤りの検出に使うものです。どちらも圧縮の方式ではありません。

符号は木の「葉」だけに置く010101A:0B:10C:110D:111よく出る文字は短いまれな2文字は同じ長さ最後の1ビットだけ違うだめな例:10 と 101 を両方使う101「10」で区切る?「101」で区切る?どちらか決められない=使えない
ハフマン符号の符号は木の葉にだけ置くので、ほかの符号の書き出しと一致しない。10と101を両方使うと、受信側はどこで区切るか決められない。

試験での問われ方

  • PCM:「64,000ビット/秒・8ビット」の組み合わせで、ほぼ毎回同じ数字が出ます。選択肢の15.6は8で割り忘れた値、125が正解です。
  • ハフマン符号:符号表の空欄を埋める形式です。ほかの符号の書き出しと同じになる選択肢がひっかけとして並びます。
  • ランレングス符号化:「反復回数と文字の組」という言葉があればランレングスです。ハフマン符号と取り違えさせる選択肢が出ます。
  • A/D変換:使用例を選ぶ問題では、D/A変換やパラレル/シリアル変換が紛れ込みます。利点を選ぶ問題では「誤差が発生しない」「遅延がない」と言い切る選択肢が誤りです。
例題 1

PCM:64,000ビット/秒・8ビットのサンプリング間隔を求める

PCM 方式によって音声をサンプリング(標本化)して 8 ビットのディジタルデータに変換し,圧縮せずにリアルタイムで転送したところ,転送速度は 64,000 ビット/秒であった。このときのサンプリング間隔は何マイクロ秒か。

ア 15.6
イ 46.8
ウ 125
エ 128

出典:平成28年度 春期 基本情報技術者試験 午前 問4

解き方と答えを見る
  1. 分かっていること:転送速度は64,000ビット/秒、1回のサンプルは8ビットで表す。
  2. 1秒あたりのサンプル数を求める:64,000 ÷ 8 = 8,000回/秒。
  3. サンプリング間隔は、1秒あたりのサンプル数の逆数:1 ÷ 8,000 = 0.000125秒。
  4. マイクロ秒に直す:0.000125秒 × 1,000,000 = 125マイクロ秒。
  5. 検算:125マイクロ秒ごとに8ビットなら、1秒間に1,000,000 ÷ 125 = 8,000回、8,000回 × 8ビット = 64,000ビット。問題の条件と一致する。
  6. ひっかけの確認:8で割らずに1 ÷ 64,000とすると約15.6マイクロ秒になり、選択肢アを選んでしまう。

答え:125マイクロ秒(ウ)

例題 2

ハフマン符号:Dの符号を決める

出現頻度の異なる A,B,C,D,E の 5 文字で構成される通信データを,ハフマン符号化を使って圧縮するために,符号表を作成した。a に入る符号として,適切なものはどれか。
文字出現頻度(%)符号
A2600
B2501
C2410
D13a
E12111

ア 001
イ 010
ウ 101
エ 110

出典:平成30年度 秋期 基本情報技術者試験 午前 問4

解き方と答えを見る
  1. 使われている符号を並べる:A=00、B=01、C=10、E=111。
  2. 2ビットの符号のうち、00・01・10はすでに使われている。3ビットの符号を作るときに、これらで始まる符号は使えない(書き出しが一致してしまうため)。
  3. したがって3ビットの符号は11で始まるもの、つまり110か111に限られる。
  4. 111はEが使っているので、Dは110になる。
  5. 出現頻度が最も低い2文字(D:13%、E:12%)が、最後の1ビットだけ違う同じ長さの符号(110と111)になっていることも確認できる。
  6. ほかの選択肢を除外する:001はA(00)、010はB(01)、101はC(10)で始まるため、すべて使えない。

答え:110(エ)

要点(試験直前に読む)

  • PCMの間隔=1 ÷(転送速度 ÷ ビット数)。64,000 ÷ 8 = 8,000回/秒、1/8,000秒 = 125マイクロ秒。
  • PCMの手順は標本化(時間を区切る)→ 量子化(値を段階に丸める)→ 符号化(2進数にする)。
  • ハフマン符号の空欄は、ほかの符号の書き出しと一致しないものを選ぶ。出現頻度が最も低い2文字は、最後の1ビットだけが違う。
  • 「反復回数と文字の組」はランレングス符号化。頻度に応じて符号の長さを変えるのはハフマン符号。
  • A/D変換はアナログからディジタルへの変換(センサー → マイコン)。ディジタル化してから計算すると、雑音・温度・部品精度の影響を受けにくい。

ひっかけ

  • PCMで8ビットで割り忘れると、1/64,000秒 ≒ 15.6マイクロ秒になる。まず「1秒あたりのサンプル数」を出す手順を必ず踏む。
  • ハフマン符号で、001・010・101のように既存の符号(00・01・10)で始まる選択肢は使えない。書き出しの2ビットを照合すれば消去できる。
  • ランレングスを問う問題で、ハフマン符号・EBCDIC・巡回符号が並ぶ。圧縮方式はハフマンとランレングスだけで、そのうち「連続」を扱うのはランレングス。
  • A/D変換の使用例を問う問題で、音を鳴らす(D/A変換)やパラレル/シリアル変換が紛れる。アナログからディジタルへの向きかどうかを確認する。
  • ディジタル化の利点を問う問題で、「誤差が発生しない」「遅延がない」と言い切る選択肢は誤り。正解は「影響を受けにくい」という表現の選択肢。

用語(14)

PCM Pulse Code Modulation(パルス符号変調)
アナログ信号を、標本化・量子化・符号化の3段階で2進数の列に変える方式。
標本化 ひょうほんか(サンプリング)
連続した信号から、一定の時間間隔ごとに値を拾うこと。
⚠ 量子化と取り違えやすい。標本化は時間を区切る作業、量子化は値の大きさを段階に丸める作業。
量子化 りょうしか
拾った値を、決められた段階(8ビットなら256段階)のどれかに丸めること。
⚠ 標本化は時間方向、量子化は値の大きさ方向で区切る。
符号化 ふごうか
量子化した段階の番号を、0と1のビット列に置き換えること。
サンプリング間隔 さんぷりんぐかんかく
値を拾ってから次に拾うまでの時間で、1秒あたりのサンプル数の逆数になる。
⚠ サンプリング周波数(1秒あたりの回数)とは逆数の関係。単位が回/秒なら周波数、秒やマイクロ秒なら間隔。
マイクロ秒 まいくろびょう(μs)
100万分の1秒(10のマイナス6乗秒)。
⚠ ミリ秒(1,000分の1秒)、ナノ秒(10億分の1秒)と取り違えないこと。
A/D変換 Analog to Digital 変換
センサーの電圧のような連続した値を、コンピュータが計算できる飛び飛びの数値に変えること。
⚠ D/A変換はその逆で、数値を音や電圧などのアナログ信号に戻す。
D/A変換 Digital to Analog 変換
ディジタルの数値を、音や電圧などの連続した信号に戻すこと。
⚠ 保存した音のデータを鳴らすのはD/A変換。A/D変換とは向きが逆。
ハフマン符号 はふまんふごう
出現頻度の高い文字ほど短いビット列を割り当てて、全体のデータ量を減らす可変長符号。
⚠ ランレングス符号化は、同じ文字の連続を回数で表す方式。頻度に応じて符号の長さを変えるのがハフマン符号。
可変長符号 かへんちょうふごう
文字によって符号のビット数が異なる符号の付け方。
⚠ 固定長符号(どの文字も同じビット数)と区別する。
接頭語条件 せっとうごじょうけん
どの符号も、ほかの符号の書き出し部分と一致しないという条件で、これを満たすと区切り記号なしで正しく読み分けられる。
ランレングス符号化 Run-Length 符号化
同じ文字が続く部分を、反復回数と文字の組に置き換えて短くする圧縮方式。
⚠ ハフマン符号との区別がよく問われる。「反復回数」「連続」という言葉が出たらランレングス。
EBCDIC Extended Binary Coded Decimal Interchange Code
主に大型汎用機で使われる8ビットの文字コードで、圧縮方式ではない。
⚠ 圧縮方式を問う問題で、誤りの選択肢として出てくる。
巡回符号 じゅんかいふごう
CRCのもとになる符号で、伝送中の誤りを検出するためのもの。
⚠ 誤りを検出するための符号であり、データを小さくする圧縮とは目的が違う。

このレッスンの過去問

このレッスンで稽古する