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

2.1 英数字

コンピューター内部では,全てのデータは数字として取り扱われる.文字データの場合, 全ての文字について整数との対応関係が決められている.コード表と呼ばれるものが文字 と整数との関係を示す.例えば,英数字の場合,アスキーコード表(教科書 []のp.374)というものがあり,世界中で使われている.英数字は, この表にしたがい0〜127の整数が割り当てられているのである.

C言語のプログラムで,アスキーコードの値を確かめたければ,以下のようにすればよい. 文字'L'を表す整数値を表示するプログラムである.実行結果から分かるように,文字'L' は16進数で4c,10進数で76である.教科書 [1]のp.374の アスキーコード表と比較せよ.

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

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

	  return 0;
	}

\fbox{実行結果}
L = 4c  76

この例で分かるように,文字型変数(char)を用いて,文字を格納することができる. しかし,この文字型の変数は,-128〜127まで2の整数しか格納できない3ことになっている.従って,文字型の変数で表現できるのは256 種類の文字に限られる.アルファベットを使う文化圏では,このように256文字もあれば 全ての文字が表現できる.0〜255と言うのは,16進数で2桁--2進数で8桁--でコンピュー ターにとって都合が良い.

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

2.2 日本語

中国語や日本語のように多くの文字を使う文化圏では,256種類しか表現できないコード は使い物にならない.その解決のために,日本語はアスキーコードとは異なる次のような 文字コードが使われる.

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

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

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

英数字と日本語では,1文字を表現するために必要な情報量が異なる.英数字を表す文字 コードは0〜255(1バイト),日本語では0〜65535(2バイト)が使われる.



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年1月25日


no counter