メニュー
目次
コンピュータにおけるデジタルデータの表現
デジタルデータとは
自然にあるデータは,音声など本来はアナログ値(連続値)である.マルチメディアシステムなどのコンピュータでは,これをデジタル値(不連続値,離散値)に変換してから処理を行う.このようなデジタル値だけのデータのことをデジタルデータと呼ぶ.
コンピュータがわざわざデジタルデータを扱うのは,次に説明するように原理的にコンピュータが二進数しか扱うことができないことが理由である.
二進数によるデジタル値の表現
10進数 | 16進数 | 2進数 |
---|---|---|
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
16 | 10 | 10000 |
コンピュータを構成する電子回路は,それぞれ回路の各部で電流が流れる・流れない状態を,適切に制御することで計算を行っている.その回路の「電流が流れる」「流れない」という内部状態を符号「0」「1」に置き換えて表現すると,その「0」と「1」だけを組み合せて構成される一連の記号によって,コンピュータの内部状態をすべて表現できることになる.
逆にいえば,コンピュータではこの「0」「1」の二つの符号だけで表現することが可能なデータ(すなわち二進数)だけしか処理することができない.
二進数だけで様々なデータを表現するには
実際のコンピュータでは,二進数だけでなく様々な文字や音声・画像など様々なデータを扱っているように見える.では,二進数しか扱えないコンピュータなのに一体どうやってこれら文字や画像などを扱うことができるのであろうか.
答えは単純で,文字や音声や画像も,すべて二進数で表現すればよい.例えば,文字を二進数として表現する具体的方法として,次のページで紹介する文字コードを使用している.
結局コンピュータのハードウェア自体は,データを処理する際は,すべて二進数として処理をしている.その二進数のデータが,数値ならば単純に計算処理され,文字や画像ならば画面に表示するプログラム処理などを行わせる.
では,その二進数のデータがどんな種類のものであるかを判断するにはどうすればいいのか.画像・音声・文字などデータがどの種類のものか判断するのは,オペレーティングシステムなどのシステムプログラムの仕事である.ところが,データは二進数の羅列でしかないため,そのデータだけを見て100%正確に種類を判断することはできない.結局,これらシステムプログラムが,目的の仕事に合わせて都合のよいようにどんな種類のデータなのか勝手に決めつけて,その種類のデータを処理するためのアプリケーションプログラムを起動させることになる.
例えば,代表的なオペレーティングシステムであるWindowsでは,この判断をファイル名につけられている拡張子(文書ファイルの場合「なんとか.docx」の.docxの部分)によってファイルに格納されているデータの種類を決めつける.(そのため,ファイル名の拡張子を変更してしまうと,そのファイルを開けなくなってしまう.)
ファイルのヘッダ情報
コンピュータのデータ用のファイルの先頭部分には,ヘッダと呼ばれる情報が付属することもある.ヘッダにはそのファイルに関する情報,データの種類やサイズなどが格納される.Windows以外のオペレーティングシステムや,あるアプリケーションプログラムでは,このようなヘッダ情報を確認してデータの種類を判断することもある.もちろん,これはすべてのコンピュータの動作に必ず要求されるものではなく,利用者(プログラム)の利便をよくするための一種の工夫であり,それを利用するかしないかは,プログラム次第である.
(参考)写真のExif情報とジオタグ
写真データの場合には,特にExifと呼ばれる規格化されたヘッダ情報が付加される.これはカメラ側が統一規格でどのメーカでも,撮影に使用した機材の詳細や撮影モードなど,さらにはGPSによる位置情報まで格納していることがある.写真データに含まれる位置情報のことは特に「ジオタグ」と呼ぶ.写真データのExif情報を確認できる画像ビューアも多い.例えばirfanViewなどがある.また,Google Mapではジオタグを使用してマップ上に写真を配置している.例えばこのような例である.