19.5.2 ASCII

では,具体的にどのように文字とビット列が対応するのかを見ていきましょう.

世界で広く用いられている文字コードにはASCII (アスキー)と呼ばれるものがあります. これは7ビットで文字を表します. ASCII で定義されている文字はアルファベットや数字や記号, 制御文字などですが, 7ビットを用いていますので128文字を表すことができます. 1バイトが8ビットのコンピュータでは, 下位7ビットのみを使って1バイトで1文字を表し, 最上位ビットは使いません (0にします).

0123456789ABCDEF
0NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
1DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
2SP!"#$%&'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[\]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}~DEL

これは ASCII の符号表で,文字とビット列の対応を示しています. 左端の数は7ビットのうちの上位3ビットを, 上端の数は下位4ビットを,それぞれ16進数で表したものです. 例えば, 28(16) = 0101000(2) は‘(’, 41(16) = 1000001(2) は‘A’, 69(16) = 1101001(2) は‘i’ に対応していることがわかります.

exercise

‘H’‘W’‘B’の3文字に対応するビット列は,それぞれ H: (1) (2), W: (2) (2), B: (3) (2) です.

表を見るとわかるように,いくつかの区画に分かれています.

00(16)〜1F(16)制御文字
20(16)スペース
21(16)〜7E(16)通常の文字
7F(16)制御文字 (削除)

(「削除」以外の) 制御文字 (control character) が先頭に集められ, その後に通常の文字が来て, 最後に「削除」の文字が来ています.

advanced

ちなみに, 「削除」は2進数で表すと 1111111(2) ですが, これはパンチカードでいえば全てに穴が空いたものに対応します. 打ち間違えた時には全てに穴を空けて「削除」を意味するところから, 特別な文字としてこの位置に定義されています.

また, 数字やアルファベットは文字順に連続して並んでいますが, 当時としては画期的なことでした.

ASCII 登場後に, 国際規格としてISO 646 と呼ばれる規格が登場しました. これはASCIIとほとんど同じですが, 一部の文字に関しては国/言語ごとに入れ替えを可能としたものです. ASCII は ISO 646 のアメリカ版であると考えることができます. しかし, ISO 646 のうちの国際基準版というもので ASCII と同じ文字集合が規定されており, アメリカ一国だけでなく国際的に使える文字コードだと言えます.

文字の入れ換えに関して有名なところでは, ASCIIのバックスラッシュは日本版(JISローマ字)では円記号となっており, チルダはオーバースコア(上つき線)となっています. ある文字をASCIIとして考えているか,あるいはその日本版で考えているかによって, 表示される文字が異なるという現象が起きるわけです.

tips

UNIXのコマンドラインにおいては, promptman ascii return2 で ASCII の符号表を見ることができます (man コマンドについては review_s12.5 オンラインマニュアルを参照). 但し,‘LF’が‘nl’と,‘FF’が‘np’と表示されていることがあります.

advanced_s19.5.2.1 ASCIIファイルの中身

実際に,ASCIIファイルの中をのぞいてみましょう.