戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2012年 春期 午前204


問題文

Unicode 文字列を UTF-8でエンコードすると、各文字のエンコード結果の先頭バイトは2進表示が 0 又は 11で始まり、それ以降のバイトは10で始まる。16進表示された次のデータは何文字の Unicode 文字列をエンコードしたものか。    CF 80 E3 81 AF E7 B4 84 33 2E 31 34 E3 81 A7 E3 81 99

選択肢

9(正解)
10
11
12

Unicode文字列のUTF-8エンコード判定【午前2 解説】

要点まとめ

  • 結論:与えられた16進データは9文字のUnicode文字列をUTF-8でエンコードしたものです。
  • 根拠:UTF-8の先頭バイトは「0」または「11」で始まり、続くバイトは「10」で始まるため、先頭バイトの数が文字数に対応します。
  • 差がつくポイント:バイト列を先頭バイトと継続バイトに正確に分け、先頭バイトの数を数えることが重要です。

正解の理由

UTF-8では、1文字の先頭バイトは以下のように始まります。
  • 1バイト文字:0xxxxxxx
  • 2バイト文字:110xxxxx
  • 3バイト文字:1110xxxx
  • 4バイト文字:11110xxx
    一方、2バイト目以降は必ず「10xxxxxx」で始まります。
    与えられた16進データを2進数に変換し、先頭バイト(0または11で始まる)を数えると9個あり、よって9文字と判定できます。

よくある誤解

UTF-8のバイト数=文字数と誤解しやすいですが、1文字が複数バイトになるためバイト数と文字数は一致しません。
また、継続バイト(10で始まる)を文字の先頭と誤認しないことが重要です。

解法ステップ

  1. 16進データをバイト単位(1バイト=2桁16進数)に分割する。
  2. 各バイトを2進数に変換し、先頭ビットを確認する。
  3. 先頭ビットが「0」または「11」で始まるバイトを「先頭バイト」と判定する。
  4. 「10」で始まるバイトは継続バイトとしてカウントしない。
  5. 先頭バイトの数を数え、それが文字数となる。

選択肢別の誤答解説

  • イ: 10文字とするのは、継続バイトを誤って先頭バイトと数えた可能性があります。
  • ウ: 11文字はバイト数に近い誤認で、UTF-8の多バイト文字の理解不足です。
  • エ: 12文字はバイト数そのままの誤解で、UTF-8の構造を無視しています。

補足コラム

UTF-8は可変長エンコーディングで、ASCII文字は1バイト、漢字などは3バイト以上で表現されます。
先頭バイトのビットパターンを理解することは、文字数カウントや文字列処理で非常に重要です。
また、UTF-8は互換性が高く、世界中で広く使われています。

FAQ

Q: UTF-8の先頭バイトはなぜ「0」または「11」で始まるのですか?
A: 先頭バイトのビットパターンで文字のバイト数を判別しやすくするためです。0は1バイト文字、11は多バイト文字の開始を示します。
Q: 継続バイトはなぜ「10」で始まるのですか?
A: 継続バイトを区別するために「10」で始まるビットパターンが割り当てられており、先頭バイトと明確に区別できます。

関連キーワード: UTF-8, Unicode, バイト列解析、文字コード、文字数カウント
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について