学习指南

字符编码

CIE A-Level 计算机科学· 第一单元:信息表示,主题4· 15 分钟阅读

1. 字符编码原理★☆☆☆☆⏱ 3 min

计算机上显示的所有文本都以二进制数据存储。字符集是系统可编码的字符集合,包括字母、数字、符号和控制字符。字符集中的每个字符都被分配一个唯一的二进制数。

📘 定义

字符编码

将字符集中每个字符映射到唯一二进制值的过程,使字符可以以数字形式存储或传输。

例:

字符'A'在ASCII中被映射为

📐 例题

一个字符集每个字符使用7位,该字符集最多可以编码多少个唯一字符?

  1. 1

    每个比特可以有2种可能的值(0或1)。对于位比特,唯一组合的数量是

  2. 2

    代入

  3. 3
    27=1282^7 = 128
  4. 4

    一个7位字符集可以编码128个唯一字符。

Exam tip:

永远记住:当每个字符占位时,唯一字符的数量是,而不是

2. ASCII与扩展ASCII★★☆☆☆⏱ 4 min

ASCII(美国信息交换标准代码)是应用最广泛的早期字符编码,最初是为早期计算机网络中的英语通信设计的。

📘 定义

7位ASCII

一种7位编码方案,支持128个字符,包括大小写英文字母、数字、标点符号和控制字符(例如换行、退格)。

7位刚好可以放入一个8位字节中,原本多余的1位用于奇偶校验纠错。后来这一位被重新利用,产生了扩展ASCII。

📘 定义

扩展ASCII

一种8位编码,将7位ASCII扩展为个唯一字符,增加了额外符号和西欧语言的带重音字符。

📐 例题

使用扩展ASCII存储字符串"HELLO CIE",最少需要多少字节?

  1. 1

    扩展ASCII每个字符占1字节(8位)。计数所有字符,包括空格。

  2. 2

    计数字符:H、E、L、L、O、(空格)、C、I、E,共9个字符。

  3. 3
    9×1=9 bytes9 \times 1 = 9 \text{ bytes}
  4. 4

    该字符串需要9字节的存储空间。

3. Unicode★★☆☆☆⏱ 5 min

ASCII和扩展ASCII仅支持少量字符,不足以满足非英语语言、表情符号和特殊学术/技术符号的需求。Unicode就是为解决这个问题而开发的。

📘 定义

Unicode

一种通用字符编码标准,旨在支持所有书面语言、符号和表情符号,迄今为止已定义了超过149,000个字符。

Unicode有多种编码格式(称为Unicode转换格式,即UTF),每个字符的比特长度各不相同:

  • UTF-8:可变长度编码,每个字符占1-4字节。向后兼容7位ASCII,是万维网最常用的编码。

  • UTF-16:每个字符占2或4字节,多用于许多操作系统的内部文本存储。

  • UTF-32:每个字符固定占4字节,实现简单但对大多数日常使用来说效率低下。

📐 例题

比较字符串"Apple 🍎"在UTF-8和扩展ASCII中的存储情况,解释为什么扩展ASCII无法显示该表情符号。

  1. 1

    计数总字符数:A、p、p、l、e、(空格)、🍎,共7个字符。

  2. 2

    扩展ASCII只有256个字符编码,不存在该表情符号的编码。它只能存储前6个字符("Apple "),并会显示替换错误字符。总大小 = 6 × 1字节 = 6字节。

  3. 3

    在UTF-8中,所有ASCII字符(包括空格)每个都占1字节,表情符号占4字节。

  4. 4
    (6×1)+(1×4)=10 total bytes(6 \times 1) + (1 \times 4) = 10 \text{ total bytes}
  5. 5

    UTF-8可以用10字节正确编码全部7个字符,而扩展ASCII无法编码该表情符号。

4. 计算文本存储需求★★★☆☆⏱ 5 min

考试中常见的3-5分题目会要求你计算存储给定文本块所需的总内存大小。无论使用哪种编码,方法都遵循一套简单一致的流程。

📐 例题

一本100页的书使用16位定长Unicode编码。如果每页平均有300个单词,每个单词有5个字符加1个空格,计算总大小(单位:千字节,1 KB = 1000字节)。

  1. 1

    计算每页平均字符数:每个单词5字符 + 1空格 = 每个单词6字符,每页300单词 = 300 × 6 = 每页1800字符。

  2. 2

    16位定长编码意味着16位 = 每个字符占2字节。

  3. 3

    100页总字符数:100 × 1800 = 180,000字符。

  4. 4
    Total size=180000×2=360000 bytes=360 KB\text{Total size} = 180000 \times 2 = 360000 \text{ bytes} = 360 \text{ KB}
✓ 快速检测

检验你的理解:

  1. 如果每个字符占10位,一共可以编码多少个唯一字符?

    • 1024

    • 512

    • 10

    • 20

    显示答案
    1024

    正确:个唯一组合。

5. 常见陷阱

错误做法:

计算总存储时忘记统计空格和标点符号

原因:

大多数学生只统计可见字母,但所有字符都需要编码

正确做法:

永远要统计字符串中的每个字符,包括空白符和标点符号

错误做法:

将唯一字符数量算成而不是

原因:

混淆了比特数和可能的二进制组合数量

正确做法:

记住位比特可以得到个唯一组合,因此一定要使用幂运算

错误做法:

假设所有Unicode都是每个字符定长2字节

原因:

只有16位定长Unicode每个字符占2字节;最常用的Unicode格式都是可变长度的

正确做法:

始终使用题目中指定的比特长度,不要默认假设一个值

错误做法:

认为扩展ASCII一定和Unicode兼容

原因:

只有7位ASCII向后兼容UTF-8;扩展ASCII使用的额外编码是非标准的,和Unicode不匹配

正确做法:

记住扩展ASCII的字符值在Unicode中可能映射错误

6. 速查表

编码方案

每个字符比特数

最大唯一字符数

常见应用场景

7位ASCII

7位

128

基础英文文本

扩展ASCII

8位

256

西欧语言

定长16位Unicode

16位

65536

通用纯文本

UTF-8

1-4字节(可变)

149,000

网页,向后兼容7位ASCII

真题中的出现

AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。

  • 2022 · 1

    内存大小计算题

  • 2023 · 1

    比较ASCII和Unicode

深入阅读

下一步

字符编码是信息表示中的核心主题,经常以简短计算题的形式出现在CIE 9618的试卷1中。掌握字符计数和存储大小计算的方法是考试中轻松拿分的途径。这个概念是所有文本数据处理、压缩和网络数据传输的基础。接下来,你将继续学习其他常见媒体类型(图像、音频)如何在计算机系统中表示为二进制数据。