重要! 理解して使いましょう 半角文字と全角文字

パソコン

パソコンでの文書作成はいろいろな文字を使うので大変です。

英字
数字
記号
ひらがな
カタカナ
漢字
絵文字

とこれだけの文字を組合せて文書を作らなくてはいけません。

それに加え、パソコンでの文字入力は手書き以上に厄介です。

英数字・記号ならともかく漢字などは読みを入れて変換しなくては入力できません。

というのも、英語圏なら英数字・記号で事足りるのに日本で使う文字は種類が多すぎるからです。

パソコンでは英語圏で使う文字にプラスして日本語を扱うために色々と工夫されています。

文字は半角文字・全角文字という2種類の文字を使って、ほとんど全ての文字をカバーするようにしています。

しかし、この半角文字・全角文字をどのようなものか理解して使っている人はどれだけいるでしょうか?

半角文字・全角文字の違いは、文字の大きさが倍・半分と理解していませんか?

しかし、昨今のパソコンのワープロでは文字の大きさは1mm以下の単位で設定できますので、倍・半分という見た目での判断はできません。

では、どう考えればいいのでしょう。

ここでは、この半角文字・全角文字の話をしていきます。

そもそもコンピュータは英語圏のものである

コンピュータ(パソコン)は、元々日本語などを意識して作られたものではありません。

米国を中心とした英語圏で開発されたものなので、英語に数字、それと記号などが扱えればよかったのです。

英語 大文字A-Z  26種類、小文字a-z 26種類
数字 0-9 10種類
記号 + - * / = ? など100種類もないでしょう。

全て合計しても200種類以下で、これだけの文字を使うことができれば事足りたわけです。

日本語を扱おうとすれば、これにひらがな・カタカナ・漢字を加える必要があります。

特に漢字は3千種類程ありますので、大変だということは分かると思います。

これら多くの文字をうまく取り扱うには、ディスプレイに表示された文字を見ているだけでは少し役不足です。

コンピュータが文字をどのように処理しているかを知ることにより、半角文字・全角文字の正体も分かり、文字をスムーズに取り扱えるようになります。

コンピュータ内部での文字の扱い

キーボードから入力された文字はディスプレイに表示されますが、キーボードから直接表示されているわけではありません。

一旦、コンピュータの頭脳に当たるメモリに記憶され、その記憶した文字をディスプレイに表示しています。

入力した文字は必ずメモリに記憶されるわけです。

また、文字を消したり、コピーしたり、色を変えたりすることも全てメモリ内で行われます。

人間はメモリ内を見ることができないので、ディスプレイに表示するようにしているのです。

また、コンピュータは全てが2進数の組合せで動作するようになっています。

メモリ内に記憶される文字も、例えば「A」 という文字は、「A」 をそのまま記憶しているのではなく、「A」に対してコード番号を付け、その番号すなわち数値を2進数で記憶しています。

このコード番号は、規格でそれぞれの文字に割り付けられており、文字コードと呼んでいます。

文字コード

文字コードの規格にはいろいろありますが、代表的な半角文字コード「ASCII文字コード」を載せておきます。

ASCII_CODE1a

少し、表の見方を説明しておきます。

例えば「A」という文字は、1桁目が4、2桁目が1となっていますのでコード番号は41です。

また、「5」という文字は、1桁目が3、2桁目が5となっていますのでコード番号は35です。

このように、1桁目、2桁目の並びで2桁の数字でコード番号となります。

では、「M」ならどうでしょう。

1桁目が4、2桁目がDとなっていますのでコード番号は4Dです。

何か変ですね。アルファベットの「D」が混ざっています。

これは、コード番号を示す数字が16進数で表されているためです。

本来2進数で表すべきコード番号なのですが、桁数が大きくなるので2進数を16進数で表しています。

また、10進数で表さないのは10進数は人間にとっては分かりやすいのですがコンピュータにとっては2進数や16進数の方が扱いやすいからです。

それと、表の中に水色の2文字ないし3文字が割り付けられています。

これらはコンピュータが扱う特有の文字で見えない文字(ある機能)を表しています。

この特別な文字は後ほど説明することにします。

 

基本的に英語圏でのコンピュータは上のコード表で表されている文字だけを扱うことができればいいのです。

16進数と2進数の対応は、以下のように16進数の1桁が2進数の4桁にうまく対応しています。

10進数、16進数、2進数の対応を書いておきます。

D   H     B

0 → 0 → 0000
1 → 1 → 0001
2 → 2 → 0010
3 → 3 → 0011
4 → 4 → 0100
5 → 5 → 0101
6 → 6 → 0110
7 → 7 → 0111
8 → 8 → 1000
9 → 9 → 1001
10 → A → 1010
11 → B → 1011
12 → C → 1100
13 → D → 1101
14 → E → 1110
15 → F → 1111

Dは10進数、Hは16進数、Bは2進数

 

コード番号表にある文字は、全部で128文字です。

また、この128文字を表すコード番号は、00~7Fです。

コード番号を表している数字は16進数ですが、上の対応から2進数にすると

0000 0000~0111 1111

となります。

通常、文字コード番号を2進数で書くと長くなるので16進数で書きます。

 

ちょっと余計なことまで書いてしまいました。

要約しますと、

・キーボードから入れた文字は文字コード(数値)でメモリに記憶され編集作業などが行われる。
・文字コードとは、文字を表す個々の形状(絵柄)に番号を割り振り区別できるようにしたもの。
・文字コードは、通常16進数で表す。

ということです。

やっと、これで半角文字と全角文字の説明ができるようになりました。

半角文字と全角文字

以上のように、コンピュータでは文字は文字コードで扱われます。

結論から先に書きますと、半角文字と全角文字の区別はこの文字コードの違いです。

上に載せました「ASCII文字コード」は半角文字のコード表です。

では、全角文字のコードはどうなるかというとこれも規格で決められています。

詳細は書きませんが、半角文字コードと全角文字コードの区別は、

半角文字コード 16進数2桁
全角文字コード 16進数4桁

というようにコード番号の桁数の違いです。

16進数2桁で、256個の文字にコードを付けることができますので、
半角文字(英字、数字、記号、特殊文字)
を全てカバーできますが、
全角文字(英字、数字、記号、ひらがな、カタカナ、漢字、絵文字など)
は文字数が多すぎてコード番号を割り振ることができません。

しかし、16進数4桁だと65536個の文字にコード番号を付けることができます。

このように、半角文字と全角文字は見た目の大きさの違いではなく文字コードの桁数の違いであることを覚えておいてください。

全角文字はおまけの文字

元々コンピュータは英語圏のものなので半角文字を扱うことができれば十分でした。

しかし、日本語の文書を書くなどその他の言語を扱うにはさらに文字を扱えるよにしなくてはいけません。

そこで、全角文字が考え出されたのです。

つまり、全角文字は半角文字で表現できない文字を付け加えるための文字なのです。

全角文字は文書などを表現するためだけに使う文字と考えてください。

英字、数字、記号は半角・全角どちらにもあります

A  A
3  3
?  ?

左が半角文字、右が全角文字です。

半角・全角の区別がつかない場合がありますので、区別しにくい部分では全角文字に下線を引いておきます。

画面に表示されているということは、メモリにそれぞれのコード番号が記憶されています。

41 8260
33 8252
3F 8148

「A」「3」「?」、半角・全角それぞれのコード番号(16進数)です。

同じ A、3、? でもコード番号が違うので、全く違う文字ということになります。

数字と数値

ここで、またややこしい表現が出てきました。

英字や日本語(かな・漢字)は明らかに文字です。

しかし、数字だけはどのように扱うかでメモリへの記憶のされ方が変わってきます。

例として、「3」 という数を考えてみます。

「3」 は、

半角文字の 3
全角文字の
  数値としての 3

の3種類があります。

半角文字・全角文字として扱う場合は、上で説明しましたようにそれぞれのコード番号を取り扱えばいいことです。

しかし、

3 → 33
   → 8252

のように、コード番号は 3 という大きさを表しているのではなく、3 もしくは という形状の文字を区別するために付けた番号です。

3+3 という計算をするなら、メモリ内に記憶されている文字コードを足すということになってしまいます。

これでは、6 という結果は出てきません。

文字として扱う数字ではなく、普通に計算ができる数値として取り扱わなくては計算ができないのです。

すなわち、3 を大きさを表す数値としての 3 として取り扱わなくてはいけないことになります。

3 という大きさを持つ数値として扱う場合は、メモリ内にはコード番号ではなく純粋に3という数値が記憶されます。

以上のことは説明の仕方が難しいので分かって頂けるか疑問ですが、こんなことになっているんだなくらいでご理解ください。

実際にアプリを使って文書を書く時や計算をする時は、アプリの方で数字として扱うか数値として扱うかを切り替えていますのでご安心ください。

但し、計算をする時は全角で数字を入れないようにしてください。計算できない場合があります。

アプリは半角文字の数字を半角数字と見るか、数値として見るかを判断しています。

基本的に全角文字の数字は数値として扱えません。

計算をする時は半角文字として数字を入れるようにしてください。

コンピュータ特有の特殊文字

上の文字コード表に水色の2文字ないし3文字の部分があります。

これは、コンピュータを制御する機能などに名前を付けコード番号を割り振っています。

これらは文字コード表にあるので一応文字扱いなのですが、普通に文字として画面に表示されない文字となっています。

空白と改行

文書を入力時、[Space]キーで文字と文字の間を開けたり、[Enter]キーで行を替えたりします。

実は、この操作は空白文字及び改行文字を入力しているのです。

空白文字及び改行文字は特殊文字です。

[Space]キーを押さえますと、1文字分間隔が開きます。

[Space]キーは間隔を開けるものではなく、透明の文字を入れるキーです。

コード番号では20、コード表に「sp」と書かれた透明の文字を入力するキーとなります。

また、この空白文字は全角文字にもあります。

 

改行文字は少しややこしいです。

改行を表す文字ということなのですが、どういうことか分かりますか?

これは、以下で図示して解説します。

 

メモリ内の文字と画面表示との対応

入力した文字はメモリ内に記憶されていき、それがディスプレイ画面に表示されます。

メモリに記憶されている文字コード番号と、ディスプレイに表示されている文字の対応を図示します。

han-zen5

これは、ワードパッドで文字を入力した画面です。

空白行も含めて4行ありますが、

1行目は半角文字のみ
2行目は全角文字のみ
3行目は改行文字のみ
4行目は交互に半角文字・全角文字

を入力した画面です。

この画面のメモリイメージを書きますと、

61 20 42 32 3F B1 0D 0A
  8281 8140 8261 8251 8148 82A0 8341 944E 0D 0A
  0D 0A
  61 8281 42 8261 20 8140 32 8251 3F 8148 B1 8341

となります。

赤は空白文字コード、太字は改行文字コードですが半角文字2文字で改行を表しています。

1行目は半角文字ばかりなので、それぞれの文字に対応した16進数2桁で表された文字コード番号が8文字分並んでいます。

2行目は全角文字ばかりなので、それぞれの文字に対応した16進数4桁で表された文字コード番号が10文字分並んでいます。

3行目は、改行文字コード2文字です。

4行目は、半角文字・全角文字...という順で入れていますので、16進数2桁・16進数4桁...の順に12文字分並んでいます。

尚、これはメモリ内の文字部分だけを分かりやすく書いただけで、実際には付帯したデータも記憶されています。

また、それぞれの文字コードの間を見やすいように空白で開けていますが、実際には詰まっています。

それと、ここでは半角文字のカタカナを使っています。

上の「ASCII文字コード」にはカタカナ半角文字はありませんが、日本のパソコンではカタカナ半角文字を含めた「SHIFT-JIS文字コード」を使っているのでカタカナ半角文字が使用できます。

 

上で書いたメモリイメージは、分かりやすいように行替えしていますが実際には

61 20 42 32 3F B1 0D 0A 8281 8140 8261 8251 8148 82A0 8341 944E 0D 0A 0D 0A 61 8281 42 8261 20 8140 32 8251 3F 8148 B1 8341

というように、文字コードが横一列に並んでいます。

複数行に渡って書いていますが、画面に入り切らないので折り返されただけです。

実際には延々と横一列に並んでいると考えてください。

画面に表示する時に、前から順に文字コードで表された文字が表示されていきます。

少し説明をしますと、

まず、コード61、半角の「a」が表示されます。

次に、半角1文字分の空白が開きますが、これはコード20、半角の透明な文字が表示されると考えてください。

透明の半角文字ですから、半角1文字分間隔が開いて見えるわけです。

続けて、42 32 3F B1 に相当する「B」「2」「?」「ア」が表示されます。

問題は次です。

0D 0A に相当する半角2文字で改行を表します。

画面には次の8281、全角の「a」から行が替わって表示されることになります。

因みに文字入力時、改行する場合に[Enter]キーを押さえますが、その時に0D 0A の半角2文字が入るようになっています。

以降、文字コードを右へ右へと追いかけて文字が表示されていくわけです。

 

上の流れは、キーインした文字が画面表示される状態を表しています。

キーイン → 文字コードがメモリに入る → 文字を画面に表示

が一瞬に行われますので、操作している人はいかにもキーインした文字が画面に直接表示されているように見えるわけです。

尚、改行を表す文字はOSに何を使っているかによって異なってきます。

ここで説明した 0D 0A の2文字で表すのは Windows の場合で、UNIX や macOS では 0A 1文字で改行を表します。

 

少し深入りした説明になってしまいましたが、半角文字と全角文字の違いが文字コードの違いであることが分かっていただけたでしょうか。

空白文字と改行文字は必ず文書作成で使いますので、以上のことを理解すれば文字の取り扱いが楽になるはずです。

また、様々な文字コードの種類がありパソコン間で文書をやり取りする時などに支障が出たり、文字のデザインを決めるフォントなども関わってきますので、文字を理解していくほど難しいものであることが分かってくるでしょう。

コメント

タイトルとURLをコピーしました