2 コンピューター内部での文字の表現

2.1 英数字

以前も述べたように、コンピューター内部では、全てのデータは数字とし取り扱われてい る。文字を扱う場合、それと整数との対応関係が決められている。決められた関係は、コー ド表にまとめられている。例えば、英数字の場合、アスキーコード表というものがあり、 世界中で使われている。参考資料の表2にアスキーコードを示して おく。この表から分かるように、英数字の各々には、0〜127の整数が割り当てられている のである。

コンピュータープログラムで、アスキーコードの値を確かめたければ、以下のようにすれ ばよい。

	#include <stdio.h>
	  int main(void){
	  char c;

	  c='L';

	  printf("L = %d\n",c);

	  return 0;
	}

この例で分かるように、文字型変数(char)を用いて、文字を格納することができる。 しかし、この文字型の変数は、-128〜127まで2の変数しか格納できない3ことになっている。従って、文字型の変数で表現できるのは256 種類の文字に限られる。アルファベットを使う文化圏では、それで問題ない。多くのコン ピューターでは、英数字はこのアスキーコードが使われる。0〜255と言うのは、16進数で 2桁である。

ここで、理解して欲しいのは、文字は整数に置き換えられると言うことである。コン ピューター内部では、この整数を扱うことにより文字の処理をしている。そして、文字と 整数の対応を示したものがコード表である。

ここは少し難しいが、とりあえず説明しておく。文字型の単純データ構造では、1バイト のデータが格納できる。1バイトは8ビットで、0〜255の整数が格納できる。255は、 $ 2^8-1$である。

2.2 日本語

中国語や日本語のように多くの文字を使う文化圏では、256種類しか表現できないコード は使い物にならない。

その解決のために、日本語はアスキーコードとは異なる文字コードが使われる。代表的な のが、


  日本語euc 		 extend unix codeの略で、主にUNIXで使われる。

shift-jis 主にパソコン(DOSやWindows, machintosh)で使われている。
JISコード 日本工業規格 JIS(Japanse Industrial Standards)が決めたコード。
ユニコード 漢字を含む世界のすべての文字を全部表現できるコード。
である。いろいろあるが、すべて文字と整数との対応が決められている。ただし、コード 毎にその対応は異なる。例えば、「秋」という漢字は、表1のようになっ ている。

表 1: "秋"をそれぞれの日本コードで表す。c言語の場合、先頭に0xとつく数字は16 進数を表す。
コード 16進数 10進数
日本語EUC 0xbda9 48553
shift-jis 0x8f48 36680
jisコード ??????? ????????
ユニコード ??????? ????????

英数字と日本語では、1文字を表現するために必要な情報量が異なる。



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年12月14日


no counter