C言語:ASCIIコード表(アスキーコード表)

C言語初級カテゴリのロゴ画像C言語初級
スポンサーリンク
スポンサーリンク

ASCII(アスキー)コード表

みなさんがお使いのパソコンには、ASCIIコード表というものが入っています。
ASCIIは、「アスキー」と読みます

かつてASCIIというコンピュータ専門誌(今はネット上に存在ascii.jp)がありましたが、ここからきていると思います。

結論から言ってしまうと、半角文字の「A」は、コンピュータ内部では65という数値です。以下の表に示す文字に対応した番号コンピュータ内部を流れるデータということです。
ASCIIコード表は、文字に対応した0~127までの番号が振ってある表です。
番号16進表記番号文字
00x00NUL(null文字)
10x01SOH(ヘッダ開始)
20x02STX(テキスト開始)
30x03ETX(テキスト終了)
40x04EOT(転送終了)
50x05ENQ(照会)
60x06ACK(受信OK)
70x07BEL(警告)
80x08BS(後退)
90x09HT(水平タブ)
100x0aLF(改行)
110x0bVT(垂直タブ)
120x0cFF(改頁)
130x0dCR(復帰)
140x0eSO(シフトアウト)
150x0fSI(シフトイン)
160x10DLE(データリンクエスケープ)
170x11DC1(装置制御1)
180x12DC2(装置制御2)
190x13DC3(装置制御3)
200x14DC4(装置制御4)
210x15NAK(受信失敗)
220x16SYN(同期)
230x17ETB(転送ブロック終了)
240x18CAN(とりけし)
250x19EM(メディア終了)
260x1aSUB(置換)
270x1bESC(エスケープ)
280x1cFS(フォーム区切り)
290x1dGS(グループ区切り)
300x1eRS(レコード区切り)
310x1fUS(ユニット区切り)
320x20(スペース)
330x21!
340x22
350x23#
360x24$
370x25%
380x26&
390x27
400x28(
410x29)
420x2a*
430x2b+
440x2c,
450x2d
460x2e.
470x2f/
480x300
490x311
500x322
510x333
520x344
530x355
540x366
550x377
560x388
570x399
580x3a:
590x3b;
600x3c<
610x3d=
620x3e>
630x3f?
640x40@
650x41A
660x42B
670x43C
680x44D
690x45E
700x46F
710x47G
720x48H
730x49I
740x4aJ
750x4bK
760x4cL
770x4dM
780x4eN
790x4fO
800x50P
810x51Q
820x52R
830x53S
840x54T
850x55U
860x56V
870x57W
880x58X
890x59Y
900x5aZ
910x5b[
920x5c\
930x5d]
940x5e^
950x5f_
960x60`
970x61a
980x62b
990x63c
1000x64d
1010x65e
1020x66f
1030x67g
1040x68h
1050x69i
1060x6aj
1070x6bk
1080x6cl
1090x6dm
1100x6en
1110x6fo
1120x70p
1130x71q
1140x72r
1150x73s
1160x74t
1170x75u
1180x76v
1190x77w
1200x78x
1210x79y
1220x7az
1230x7b{
1240x7c|
1250x7d}
1260x7e~
1270x7fDEL(削除)

ASCIIコード表についての詳しい説明

コンピュータは人間が扱う文字を理解している訳ではなく、あくまで2進数で動作している。
しかし、人間は文字を通して情報を理解するため、コンピュータが画面に文字を表示したりするときなど、その文字を特定するために2進数を対応させた表を作った。
この数値に対応した文字の一覧表がASCIIコード表である。
パソコンの基本設計はもともと米国で作られたものです。
ですからアルファベットを扱う表を作る必要があったわけです。

例えばキーボードの「A」を押したときにコンピュータがASCIIコード表を参照するイメージを示します。

ASCIIコード表を参照するときのイメージ画像

コンピュータ自体は、2進数(0と1の情報)で動作しているため人から見て分かりやすくしたのがASCIIコード表と言えます。
ASCIIコード表自体も人間が見るための表であるため、2進数の番号ではなく、10進数の番号が振ってある表になっています。

文字には目に見える文字と目に見えない文字がある

ASCIIコード表を知る上で大事なことは、文字には目に見える文字(「A」とか「6」とかの通常の文字)と見えない文字、(「改行」や「スペース文字」「タブ文字」など)が存在するという事です。

見えない文字を制御文字と呼びます。何か機能を持った文字という意味です。
制御文字は、便宜上「\」マークをつけて表します。日本のパソコンでは、半角の「¥」マークをつけて表しています。

ちなみに見える文字と見えない文字をASCIIコード表の番号で言うと

見える文字32~126番(32番半角スペース含む)
見えない文字0~31番, 127番

となります。

その他の文字コード

現在主流の文字コードは、UTF-8。
理由は、ASCIIコードと互換性があるため

現在は、世界各国でパソコンやスマホが使われるようになり扱う文字も多種多様になりました。
当然ASCIIコードだけでは賄うことはできません。日本や中国で使う漢字、ハングル文字、アラビア文字なども含めた多様な文字に対応した文字コードも存在します。

現在、Webサイトやプログラミングの世界ではUTF-8という文字コード形式が最も普及しています。
理由はASCIIコードと互換性がある、ということが挙げられます。

そのほか日本独自で発展したJISコードやShift-JISコード、Unix系のコンピュータで普及しているEUCコードなどがあります。

ASCIIコードを使ったプログラム

ASCIIコード表の見える文字だけ出力する

22ascii.c

/* ascii.c: ASCIIコード表の見える文字だけ出力 */
#include <stdio.h>

int main(void)
{
	int i;
	/* 32番から126番目の文字を出力する */
	for(i=32; i<=126; i++)
		printf("%c", i);
	
	return 0;
}

実行結果(先頭が半角スペースのため1文字空いている)

!" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

単純にfor文を使って32から126までカウントしています。
printf関数の書式指定子に「%c」を指定するとその数字に対応したASCIIコード文字を表示してくれます。

数字に対応したASCIIコード文字を出力する

printf関数の書式指定子に「%c」を指定するとその数字に対応したASCIIコード文字を表示する機能を使います。

/* ascii_1.c: 数字に対応したASCIIコード文字を出力する */
#include <stdio.h>

int main(void)
{
	int c = 65;
	printf("%c", c);
	
	return 0;
}

とすると結果は

A

と表示されます。ASCIIコード表の65番目の文字が「A」だからです。

文字に対応したASCIIコード番号を出力する

例えばprintf関数でよく使う改行文字「\n」ですが、これを数値として表示するプログラムを作成してみます。
C言語で文字は、シングルクォーテーションでくくります。これは一見文字のようにみえますが、中身はASCIIコード番号の数値です。
例えばint c =’A’; は、c = 65; と同じです。

/* ascii_2.c: 文字に対応したASCIIコード番号を出力する */
#include <stdio.h>

int main(void)
{
	int c = '\n';
	printf("%d", c);
	
	return 0;
}

実行結果

10

と表示されました。わたしの環境(Windows10)では改行の文字コード番号は「10」でした。
改行文字のコードはお使いの環境によって変わるので違う数値になる場合があります。

おまけ:印刷用ASCIIコード表(PDF版、Excel版)

わたしが授業で使っているASCIIコード表です。
A4印刷用に作りました。ご自由にお使い下さい。

PDF版(表示
ascii.pdf

Excel版(Excel97形式:~.xls)
ascii_code.zip

コメント