ASCII単語

アスキー
4.1千文字の記事
  • 4
  • 0pt
掲示板へ
曖昧さ回避
  1. 文字コードの一つ。本項で記述
  2. アスキー(企業)
    1. かつて存在した出版社、コンピュータ会社。旧アスキー。
    2. 上記の子会社。後にメディアワークスに吸収合併。新アスキー。
  3. アスキー・メディアワークス - KADOKAWAブランドの一つ。
  4. 週刊アスキー - IT情報誌。

ASCII (American Standard Code for Information Interchange, アスキー)とは、文字コードの一つである。

概要

英語で使われる文字記号や制御文字を7ビットで表したものである。

現在使われている様々な文字コードの基礎となっており、それらの文字コードでは0x00から0x7Fまでの文字はASCIIと互換性を持たせていることが多い。UTF-8に至っては、ASCII文字だけならASCIIと1ビットに至るまで完全に一致する。

なぜ1文字1バイト=8ビットではないのか

制定された1963年にはまだCPUすら存在せず(4ビットプロセッサのIntel 4004の登場が1971年)、1ビットすら重だった。アルファベット文字文字+数字で62文字なので6ビットに収める文字コードも存在したとか。

その後データの扱いがバイト単位になってからも、通信で残りの1ビットを通信エラーチェックにあてるようになり、7ビットのASCIIが生き残ることになった。

データ通信への影響

上記のため、海外から日本日本語メールする際など、7ビットデータしか通過できない欧インターネット回線で日本語データを送ると文字化けするという事態が頻発していた。

日本語メールで送れないのはローマ字に置き換えて慢できないこともないが、画像などのバイナリファイル慢して済む問題でもないということで、8ビットデータをASCIIの7ビット範囲内に収めてメール送信を可にするQuoted-printableやuuencodeなどの符号化方式が生み出された。そのうちBase64データ交換形式として、パーセントエンコディングはURLのパス部分として、メール以外の場面でも広く使われている(メール以外ではPunycodeなど別の方式も生み出されている)。

使用文字

ASCIIに含まれる文字0x00から0x1Fと0x7Fが制御文字0x20がスペース0x21から0x7Eが文字記号となっている。

制定が1963年と古いため、制御文字には電動機械タイプライター(テレタイプ端末)や古いコンピュータが前提とされており、現在では使われていない文字が多い。

コード表

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
20 SP ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ~ DEL

背景は制御文字。「SP」はスペース

フォントの関係で、0x5C \ で円記号が表示されているかもしれないが、正しくは半角バックスラッシュ \ である。他にも日本語以外のフォントが使用されている場合などで異なる文字が表示されている可性がある。

数字は16進数で、横方向に0x01の位、縦方向に0x10の位が大きくなるように表している。例えば表の 'A' の文字であれば、0x40 + 0x01 = 0x41 = 65 が割り当てられている。

文字と小文字は32だけ離れているので、大文字 ↔ 小文字はの変換は2進数で32の位のビットを反転すれば済むようになっている。ビット演算(ビットごとに論理演算する)だと排他的論理和を用いて、例えば 'A' = 100 0001(2) の場合は、 100 0001(2) xor 010 0000(2) = 110 0001(2) = 'a' と書ける。この方法だと大文字 → 小文字と小文字 → 大文字の変換を場合分けせずに統一した式で定義することができる。

よく使う制御文字

0x00 NUL
ヌル(null)。何も書かれていないことを表す文字。すべてのビットが0であるため、磁気テープやハードディスクなどの記録媒体で言えば、物理的にはデータが何も記録されていない状態となる。
C言語などでは文字列の終端に付けて、これ以降に文字列が続かないことを表す。
0x08 BS
バックスペース。元の意味は「印字ヘッドを1文字後退する」であり、タイプライターではアクセント記号などの重ね打ち的で使用された(例:「à」を打つには「a」BS→「`」の順でタイプ、「ø」を打つには「o」→BS→「/」の順でタイプ文字の下に下線を引くにはBSで戻ってから「_」をタイプするなど)。
コンピュータの時代に入ると重ね打ちができなくなったため、直前の文字削除する機に変化した。古いテキストエディタなどで表示されていたこの文字の代用表記である "^H" をわざと用いて、「わた^H^H春香さん」のように打ち消し線の代わりとして用いることがあった。(→インターネット老人会
なお、古くは実際に「Ctrl+H」を入することでこのバックスペースを入することができたため、代用文字として「^H」(Ctrl+Hを表す表記)が用いられるようになった。
プリンタに送る制御文字としては、ドットインパクトプリンタインクリボンを用いるラインプリンタの時代まで制御文字として生き残っていた。
→詳細は「バックスペース」記事および「^H」記事を参照
0x09 HT
タブ。Tabキーで入される。tab とは table の意味で、もともと表をつくるための文字である。
Microsoft Wordなどの文書作成ソフトでは、「└」のような記号テキスト編集エリア外にあるルーラーと呼ばれる領域にある)を左右に動かしてタブの位置を自由定できるものもあるが、タイプライターではタブストップと呼ばれるレバーを左右に動かして物理的にタブ位置を制御していた。
現在でもテキストエディタ等の仕様によりスペース4個分のタブスペースや8個分などで設定され、特にプログラムインデント等で利用されている。
」タブの他に「垂直」タブ(0x0B VT)も存在するが、あまり使われなかったらしい。
0x0A LF
ラインフィード(改行)。現代の々が想像する改行とは異なり、タイプライターやテレタイプ(遠隔タイプライター)の時代は「印字ヘッドを垂直方向に次の行に進める(行頭には戻らない)」挙動だった。過去にはMacWindowsUNIX Like OSなどで挙動が違い、テキストデータの表示が崩れることがあった。
これもプリンタに送る制御文字としては長く残っていたもののひとつ。ページプリンタ流となった現在ではテキストエディタ上の単なる改行コードとしてのみ扱われている。
0x0D CR
キャリッジリターン。元の意味は「印字ヘッドを行の先頭に復帰する」挙動であり、CR単体では同じ行に重ね打ちすることができた。そのため、現代の々が想像する改行は、CRとLFを組み合わせることで実現していた。
その名残から、コンピュータの時代に入ってからも「CR+LF」の2文字改行を表すシステムが存在する(Windowsなど)。ちなみに「LF+CR」の順番ではない理由は、1行の縦幅だけ送りすればいいLFに対して1行の横幅まるまる印字ヘッドを移動させるCRのほうが時間がかかるため、テレタイプなどでは次の文字が印字されないように時間を稼ぐ必要があったからである。
LF」のみで改行を表すシステムmacOSLinuxなどのUNIX Like OS)、「CR」のみで改行を表すシステムMac OS 9以前など)も存在するため、ファイルのやりとりの際には相手の環境改行が正しく反映されているか注意が必要である。
こちらもプリンタ制御文字として較的長く残っていた。ページプリンタ流となった現在ではテキストエディタ上の単なる改行コードとしてのみ扱われている。
0x20 SP
スペース。英単を区切る際などに用いる。
タイプライターの時代は「印字ヘッドを1文字進める」という意味を持ち、バックスペースの逆の挙動を持つ制御文字として扱われていた。現在では単なる文字として扱われている。
0x7F DEL
デリート(削除)。上記コード表にてDELだけが他の制御文字と離れたところにあるのを不審に思う人も多いと思うが、パンチカード(?!)に打ち間違えた文字削除する時に、開けたを塞ぐことはできないので全てのビットに穴を開けexitて1にしていた時代の名残らしい。なにしろ制定されたのは1963年である。大事なことなので(ry
似たような理由で0x00をNULにしたかったので、前に集めても後ろに集めても制御コードを連続した単一領域に収めることは不可能であった。
現代のコンピュータでは開けたの心配をする必要もないため、カーソル直後の文字削除する機にその名を残している。

その他の制御文字

0x07 BEL
ベル(bell)。通信相手の端末に備わるベル(電鈴)やブザー音を鳴らすことができ、通信先のコンピュータの近くにいる人間を呼び出すために使われていた。現代ではまったくもって不要であるが、OSによってはエラー音を鳴らす機として今でも生き残っていたりする(ターミナルが使える人は「echo ^G(ctrl+G)」と入してみよう)。コンピュータ普及明期にはこのBELを表示させる(鳴らす)ことでゲーム効果音とするケースもあった。

上記以外の制御文字については編集者が飽きてしまったためこちらexitに詳しい解説があるので参照してほしい。

関連商品

関連項目

【スポンサーリンク】

  • 4
  • 0pt
スマホ版URL:
https://dic.nicovideo.jp/t/a/ascii

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

ASCII

1 ななしのよっしん
2010/01/30(土) 12:31:28 ID: HUkS75rcMO
AX-6 BY ASCII

急上昇ワード改