7月14日(木)2コマ目

今日、やったこと

文字コード

今日のホワイトボード

[符号化方式]Shift_JIS

1文字が1バイト(半角文字)、2バイト(全角文字)と可変長。

図 Shift_JIS

飛ばした演習問題

スライドNo.41 EUC-JPで符号化

(半角)1
ASCIIなら0x31。ASCIIの文字はEUC-JPでも同じ値に符号化されるので、0x31。

(半角)イ
半角のイはJIS X 0201では0xB2。
JIS X 0201の文字は
1バイト目に0x8Eを付加。
2バイト目はJIS X 0201で符号化した値。
よって、0x8E 0xB2。

(半角)ヌ
半角のヌはJIS X 0201では0xC7。
JIS X 0201の文字は
1バイト目に0x8Eを付加。
2バイト目はJIS X 0201で符号化した値。
よって、0x8E 0xC7。

スライドNo.42 EUC-JPで符号化

(全角)イ
全角のイはJIS X 0208の5区4点。
JIS X 0208の文字は
区、点に0xA0を足す。
よって、0xA5 0xA4。

(全角)ヌ
全角のイはJIS X 0208の5区44点。
JIS X 0208の文字は
区、点に0xA0を足す。
1バイト目は 0x05 + 0xA0 = 0xA5。
2バイト目は 44 => 0x2C 0x2C + 0xA0 = 0xCC。
よって、0xA5 0xCC。

スライドNo.56 UTF-8で符号化

1
1はUNICODE符号ではU+0031。
この範囲はASCIIで変換した値のままの1バイト。よって、0x31。

A ※Aではなく、Aに̈(ウムラウト)が付いた文字。
▼▼▼▼ 間違えていました。ごめんなさい。 ▼▼▼▼
UNICODE符号ではU+00C4。
この範囲は必要なビット長は11ビット。よって、UNICODE符号の00C4を11ビットにすると、
    C  4
 000 1100 0100

となる。これを2バイトのフォーマット(0000 0yyy xxxx xxxx)にあてはめると、

 0000 0000 1100 0100

となる。16進数で表すと、
 0x00 0xC4
となる。よって、0x00 0xC4。
▲▲▲▲ 間違えていました。ごめんなさい。 ▲▲▲▲

▽▽▽▽ ここからが正解 ▽▽▽▽
UNICODE符号ではU+00C4。
この範囲は必要なビット長は11ビット。
①まず、UNICODE符号(0x00C4)の下位1バイト(0xC4)を2進数にすると、
  1100 0100
②11ビットにするために上位3ビットに0を追加
  000 1100 0100
 ちなみに、スライドNo.46の”符号位置を2進数にすると”のフォーマットでは
  000 1100 0100
  yyy  xxxx  xxxx
 のようになる。
④スライドNo.47の”変換後ビット列”のフォーマットに変換
  1100 0011 1000 0100
 ちなみに、スライドNo.47の”変換後ビット列”のフォーマットでは
  1100 0011 1000 0100
  110y yyxx  10xx  xxxx
⑤16進数へ変換
  0xC3 0x84
答えは 0xC3 0x84 です。
△△△△ ここまでが正解 △△△△

次回は

誤差と文字コードのテストをします。
あと、プログラマ適性検査もどきをやります。