応用情報知識メモ04(デジタルデータ)


確認問題

以下にスラスラ答えられる人は読まなくても大丈夫。
・ASCII文字は何bitで表せるか答えよ。
・文字コードUTF-8において、1byte文字〜4byte文字を判別する方法を答えよ。また、どのように覚えればよいのかを答えよ。
・AD変換の3手順(○○化)を順番に答えよ。また、それぞれの工程について説明せよ。
・「44.1kHz」の意味を説明せよ。

文字コード

代表的な文字コードがいくつかある。ASCII、S-JIS、Unicodeなど。

ASCII

ASCII文字は(パリティビット含め)、8bitで表す。

Unicode

Unicodeは世界全ての文字を統一した文字コードにしようとしているもの。

UTF-8

思想としては「8bitを区切りとして表記する文字コード」だが、重要なのはココではなく、もっと細かい話である。
1byte文字から4byte文字まである(6byte文字まであるとかなんとか)。各文字について先頭のbyteに「この文字は何byteの文字か」が記載されているので、それを読んで復号する。
先頭のbyte文字の値によって、何byte文字なのかがわかるようになっている。
00000000~01111111(00~7F)は1byte文字。ASCIIと同じ。
11000010~11011111(C2~DF)は2byte文字。
11100000~11101111(E0~EF)は3byte文字。
11110000~11110111(F0~F7)は4byte文字。
また2byte文字以上の文字の場合、先頭以外のbyteは上記の値を取らない。つまり、適当にどこかのbyteを取得して値を見たとき、上記の4つに該当していればそこは先頭byteであり、該当していなければ先頭byteではないということがわかる。
これを応用して、byte文字列の文字数を調べるには、上記の4つに当てはまるbyte文字を特定すればよいことになる。例えば「80」という文字は上記に当てはまらないので、先頭byteではないことになる。
さらに、上記の4タイプは覚えにくいので、簡略化すると「0~7」「C~D」「E」「F」の4つだと覚えればよい

UTF-16

UTF-8の倍バージョン。つまり2byteを単位として文字コードを表す。
またU+FFFF などと表記される。Fが4bitを指すので16bit=2byteある。
世界中のすべての文字をU+0000~U+FFFFで表そうとしたが漢字が入りきらない問題が発生したため、拡張された。
拡張のやり方→要するに2byte×2=4byte を使用する。このとき最初の2byteに特別な値を使用することで「これは4byte文字ですよ」とわかるようにしている。
その特別な値を「サロゲートコードポイント」と呼び、値としてはU+D800~U+DFFFになる。つまり先頭の4bitがDのものはサロゲートコードに該当する。
U+D800〜U+DBFFを上位サロゲート、
U+DC00〜U+DFFFを下位サロゲートと呼ぶ。

デジタルデータの表記方法

アナログデータをデジタルデータに変換する(AD変換)は、下記3手順で行われる。今回は音楽をCD音源にすることを想定する。
①標本化(サンプリング)
②量子化
③符号化

標本化(サンプリング)

データを何分割するか、を指す。
CD音源は1秒を44100分割する規定(44.1kHz キロヘルツ)なので、音源1秒につき44100個(?)のデジタルデータを取得する。

量子化

データを何種類の値で表記するか、を指す。
CD音源は16bitで表記する。つまり2^16=65536種類の値が使用できる。
つまり1秒につき44100×2byte(16bit)必要になる。

符号化

取得したデータを2進数のデータにすること。

個人的な覚え方のコツ

AD変換は切り出し(標本化)、デジタル数値への変換(量子化)、2進数化(符号化)の順番で行う。
統計学における標本は母集団から一部を切り出すことなので、最初が標本化と覚える。
量子化(quantization)については、興味があったら理解を深めればよい。

デジタルデータの計算問題のコツ

問題形式では「量子化の単位はbit数で表記されるが、データ格納時はbyte数で表記される」ことが多い。
2つの単位があると面倒なので、量子化の単位が16bitとあるときは「ああ2byteね」と見なしてから計算を始めるとよい。

この記事が気に入ったらサポートをしてみませんか?