文字のデジタル表現

文字のデジタル表現 ワークシート
STEP 1 文字コードとは?
コンピュータは文字をそのまま扱えない!

コンピュータが扱えるのは 0と1(2進数)だけ
そのため「A = 65」「あ = 12354」のように、文字と数字を対応させた表 が必要です。
この対応表のことを 文字コード(文字符号)といいます。
A
文字
65
10進数
41
16進数
0100 0001
2進数(8ビット)
文字コードが複数ある理由
コンピュータが普及した時代や国によって、異なる文字コードが作られたためです。
異なる文字コードでやりとりすると 文字化け が起きます。
STEP 2 ASCII(アスキー)コード
ASCII = アルファベット・数字・記号を表す基本の文字コード

American Standard Code for Information Interchange の略。
7ビット(128文字) で表される、英語圏で作られた最も基本的な文字コードです。
現在のほぼすべての文字コードはASCIIと互換性があります。
ASCIIコード表(一部)
文字 10進数 16進数 2進数(8bit表記) ポイント
0 48 30 0011 0000 数字の先頭。「1」は49、「9」は57
A 65 41 0100 0001 大文字の先頭。「B」は66、「Z」は90
a 97 61 0110 0001 小文字の先頭。「b」は98、「z」は122
(スペース) 32 20 0010 0000 印字できる文字の先頭
大文字・小文字の関係(超重要!)
A
10進: 65
16進: 41
a
10進: 97
16進: 61
B
10進: 66
16進: 42
b
10進: 98
16進: 62
Z
10進: 90
16進: 5A
z
10進: 122
16進: 7A
大文字と小文字の差は10進数で常に32!
大文字 + 32 = 小文字 (A=65、a=97 → 97−65=32
2進数では 6ビット目(25の位/左から3番目)が0か1か の違いだけ。
A = 0100 0001 → a = 0110 0001

コンピュータの世界では、この1ビットを切り替えるだけで「大文字と小文字の変換」が瞬時に行えるよう、最初から計算されてASCIIコードが配置されています。
2進数の 25の位 = 32(10)
文字列としての数字(str)と数値(int)の関係
文字列「0」のASCIIコードは 48
文字列「n」(0〜9)のASCIIコードは 48 + n で計算できる。
例)文字列「5」= 48 + 5 = 53

Pythonでは、int(“5”) と書くだけで自動的に文字列から数値に変換されますが、その内部では、この 「48(文字列:0)を基準にして引き算・足し算をする」 という処理が行われています。
STEP 3 日本語の文字コード
日本語はひらがな・カタカナ・漢字など文字数が非常に多いため、
ASCIIの7ビットでは足りません
そのため日本語専用の文字コードがいくつか作られました。
JIS
JISコード
日本工業規格(JIS)が定めた文字コード。
2バイトで日本語を表現。
メールなどで使われてきた。
エスケープシーケンスで英語↔日本語を切り替える。
Shift_JIS
シフトJIS
Microsoftが拡張したJIS文字コード。
英数字は1バイト、日本語は2バイト
Windowsで長く使われてきた。
ファイルのやりとりで文字化けが起きやすかった。
EUC
EUC
Unix/Linux環境で広く使われた日本語文字コード。
日本語を2バイトで表現。
ASCIIと互換性あり(ASCII文字は1バイト)。
現在はUTF-8に置き換わり、ほぼ使われなくなった。
STEP 4 Unicode(ユニコード)
Unicode = 世界中の文字を統一して扱うための規格

100万文字以上を収録しており、現在の国際標準となっている。
UTF-8、UTF-16などの符号化方式がある。
STEP 5 文字化けとは
文字化けとは?

送り手と受け手で異なる文字コードを使っているときに発生します。
たとえばShift_JISで書かれたファイルをUTF-8として読もうとすると、対応する文字が違うためおかしな文字が表示されます。
// Shift_JISで書かれた「情報」をUTF-8で読んだ場合(例)
送り手: 情報 ← Shift_JIS で保存
受け手: 豢€ 蝣ア ← UTF-8 として読んだら文字化け!
文字化けの原因まとめ
1
文字コードの不一致
保存時と読み込み時の文字コードが違う(最も多い原因)
2
環境依存文字の使用
特定の機種でしか表示されない文字を使ってしまう
STEP 6 文字数とバイト数の計算(計算問題対策)
文字コードによって 1文字あたりのバイト数が異なるため、同じ文字列でもデータ量が変わります。
試験では「この文字列は何バイト?」という計算問題がよく出ます!
例題:「Hello情報」のバイト数を文字コード別に計算する
1
ASCII・Shift_JISの場合
「Hello」= 英数字5文字 × 1バイト = 5バイト
「情報」= 日本語2文字 × 2バイト = 4バイト
合計:5 + 4 = 9バイト
2
UTF-8の場合
「Hello」= 英数字5文字 × 1バイト = 5バイト
「情報」= 日本語2文字 × 3バイト = 6バイト
合計:5 + 6 = 11バイト
UTF-8の日本語は3バイト!
UTF-8では文字の種類によってバイト数が変わります。
ASCII文字(英数字・記号):1バイト
ひらがな・カタカナ・漢字(日本語):3バイト
一部の特殊な漢字・絵文字:4バイト
よく出る計算パターン
「英字○文字+日本語△文字のデータ量は?」という問題は、
(英字数 × 1) + (日本語数 × バイト数) で計算します。
どの文字コードかを必ず確認してから計算しましょう!
練習 やってみよう!
【基本】用語の確認
① 文字と数値を対応させた表のことを何という?
② 異なる文字コード間でデータをやりとりしたときに起きる問題を何という?
③ 英数字・記号を7ビットで表す、最も基本的な文字コードは何?
④ 世界中の文字を統一して扱うための文字コード規格は何?
⑤ 現在Webページで最も広く使われている文字コードは何?
⑥ ASCIIを基に、日本語を使えるように日本産業規格が定めだ文字コードは?
【応用】ASCIIコードの計算
⑦ 文字「A」のASCIIコードは65。では「E」のASCIIコード(10進数)は?
⑧ 文字「A」のASCIIコードは65。小文字「a」は97。では「f」のASCIIコード(10進数)は?
⑨ 文字「0」のASCIIコードは48。では文字「7」のASCIIコード(10進数)は?
⑩ ASCIIコードで、大文字と小文字の差は何?(10進数)
【発展】バイト数の計算
⑪ Shift_JISで「ABC東京」を保存すると何バイト?
(英字1byte・日本語2byte)
⑫ UTF-8で「Hello世界」を保存すると何バイト?
(英字1byte・日本語3byte)
⑬ UTF-8で「情報I」(英字1文字・日本語2文字)を保存すると何バイト?
⑭ Shift_JISとUTF-8で同じ日本語文章を保存したとき、データ量が大きいのはどちら?
まとめ ポイントを確認しよう
🔤
文字コード
文字と数値の対応表
種類が違うと
文字化けが起きる
A
ASCII
7ビット・128文字
大文字+32=小文字
数字「0」=48
🌐
UTF-8
世界標準・Webの主流
英字1byte
日本語3byte
テストで出るポイント
文字コードとは何か・なぜ必要かを説明できる
ASCIIの特徴(7ビット・大小文字の差は32)がわかる
文字化けの原因が説明できる
UTF-8・Shift_JIS・Unicodeの違いと特徴がわかる
・文字コード別のバイト数計算ができる(英字1byte・日本語2or3byte)
eduseful / 文字のデジタル表現
タイトルとURLをコピーしました