ASCIIの7ビットとは?128種類になる理由をやさしく解説

「7ビットって、何が7ビットなの?」ASCIIコードの説明を読んでいて、こんな疑問にぶつかった人は多いです。

文字コードの勉強をしていると「ASCIIは7ビット、128種類のコード」という説明が出てくる。とはいえ、そもそも「ビット」がピンとこないと、数字だけ並べられても困ります。

この記事では、7ビットが何を意味するのか、そしてなぜ128種類になるのかを順番に説明していきます。

ASCIIの「7ビット」は文字1つを表す桁数のこと

結論から言います。7ビットとは、文字1つを表すために使う2進数の桁数です。

まず「ビット」のおさらいから。ビット(bit)は、コンピュータが扱う最小の情報単位になる。0か1か、どちらかの値だけが入る「箱」だと思ってください。

この箱が7個並んでいるのが「7ビット」です。たとえば「1000001」のように、0と1が7つ並ぶ。これで文字1つぶんのデータになります。

箱の数が増えると、表せるパターンも増える。ここが大事です。

  • 1ビット:0と1の2通り
  • 2ビット:00・01・10・11の4通り
  • 3ビット:000〜111の8通り
  • 4ビット:0000〜1111の16通り

ビットが1つ増えるたびに、表せるパターンは2倍になる。1ビットで2通り、2ビットで4通り、3ビットで8通り。この「2倍ずつ増える」仕組みさえつかめば、128種類の理由もすぐ分かります。

ちなみに、現代のパソコンは8ビット(=1バイト)を1つのまとまりとして扱う。一方で、ASCIIが生まれたのは1963年です。当時のアメリカでは、英語のアルファベットと数字と記号さえ表せれば十分だった。だから7ビットという、今より1つ少ない桁数で設計されました。

7ビットは「文字ひとつに使うデータの桁数」。むしろ、これだけ覚えておけば話の半分は終わりです。

128種類になる理由は「2の7乗」というシンプルな計算

7ビットで表せるパターンの数は、2を7回かけた数になる。つまり2の7乗です。

2 × 2 × 2 × 2 × 2 × 2 × 2 = 128。これが「128種類」の正体になります。

ASCIIでは、0番から127番まで合計128個の番号に、それぞれ文字や記号がひとつずつ割り当てられている。番号の範囲は0〜127で、大きく分けると2つのグループです。

  • 制御文字(0〜31番、計32個):画面には表示されない特殊な命令。改行(10番)やタブ(9番)、ベル音(7番)などが入っている
  • 印字可能文字(32〜126番、計95個):実際に画面に出る文字。英大文字A〜Z、英小文字a〜z、数字0〜9、スペース、記号がここに収まる
  • 127番(DEL):削除を意味する制御文字。ほかの制御文字とは離れた場所にある

制御文字は全部で33個(0〜31番の32個と127番のDELで合わせて33個)。残りの95個が、目に見える印字可能文字です。

具体的にいくつか見ると、「A」は65番、「B」は66番。「a」は97番で、大文字と小文字では番号が32ずれる。数字の「0」は48番、「9」は57番になる。スペースは32番で、これが印字可能文字の先頭です。

2の7乗=128。この計算式だけ確認しておけば、「なんで128種類?」という疑問は解決します。個人的にも、この式を一度手で計算してみたら一発で腑に落ちました。

8ビット(1バイト)のパソコンでASCIIはどう扱われる?

ここで1つ、気になることがある。今のパソコンは1バイト(8ビット)単位でデータを処理します。でもASCIIは7ビット。1ビット余りますよね。

答えはシンプルです。余った最上位の1ビットには「0」が入る。

たとえば「A」のASCIIコードは65番。2進数では1000001と書ける。これは7桁です。8ビットで表すときは、先頭に0を1つ足して「01000001」になる。

もう1つ例を出します。「a」は97番で、2進数だと1100001。8ビットにすると「01100001」です。先頭が必ず0になる点は同じになります。

この「先頭の0」は、ただ埋めているだけではなかった。歴史的にはパリティビット(エラー検出用のビット)として使われていた時代があります。

パリティビットとは

データを通信回線で送るとき、途中でビットが化けることがある。たとえば0が1になったり、その逆だったりする。パリティビットは、こうしたエラーを検出するための仕組みです。

やり方はこう。7ビットの中にある「1」の個数を数える。その個数が偶数か奇数かに合わせて、8ビット目を0か1にする。受け取った側も同じ計算をすれば、ビットが途中で化けたかどうかが分かります。

とはいえ、現代ではもっと高度なエラー検出の方法がある。パリティビットとしての役割はほぼ使われていません。

今のパソコンでは、8ビットの先頭を0で埋めるだけ。残りの7ビットでASCIIの128種類を表している。これが現代の扱い方です。

だから、プログラミングで文字のデータを見ると、ASCII文字は必ず0〜127の範囲に収まる。128以上の値が出てきたら、それはASCIIではなく別の文字コード(UTF-8など)で追加された文字になります。

まとめ

  • ASCIIの「7ビット」は、文字1つを表すための2進数の桁数。0か1の箱が7個並んだもの
  • 2の7乗=128なので、0〜127の128種類のコードが割り当てられている
  • 中身は制御文字(33個)と印字可能文字(95個)の2グループに分かれる
  • 今の1バイト(8ビット)環境では、最上位ビットを0にしてASCIIを扱っている

7ビットと128種類はセットで覚えておくと、ASCIIコード表を見たときにすんなり読めるようになります。

pocketlinehatebuimagegalleryaudiovideocategorytagchatquotegoogleplusfacebookinstagramtwitterrsssearchenvelopeheartstaruserclosesearch-plushomeclockupdateeditshare-squarechevron-leftchevron-rightleafexclamation-trianglecalendarcommentthumb-tacklinknaviconasideangle-double-upangle-double-downangle-upangle-downstar-halfstatus
タイトルとURLをコピーしました