字符编码
CIE A-Level 计算机科学· 第一单元:信息表示,主题4· 15 分钟阅读
1. 字符编码原理★☆☆☆☆⏱ 3 min
计算机上显示的所有文本都以二进制数据存储。字符集是系统可编码的字符集合,包括字母、数字、符号和控制字符。字符集中的每个字符都被分配一个唯一的二进制数。
字符编码
将字符集中每个字符映射到唯一二进制值的过程,使字符可以以数字形式存储或传输。
例:
字符'A'在ASCII中被映射为。
一个字符集每个字符使用7位,该字符集最多可以编码多少个唯一字符?
- 1
每个比特可以有2种可能的值(0或1)。对于位比特,唯一组合的数量是。
- 2
代入:
- 3
- 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
扩展ASCII每个字符占1字节(8位)。计数所有字符,包括空格。
- 2
计数字符:H、E、L、L、O、(空格)、C、I、E,共9个字符。
- 3
- 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
计数总字符数:A、p、p、l、e、(空格)、🍎,共7个字符。
- 2
扩展ASCII只有256个字符编码,不存在该表情符号的编码。它只能存储前6个字符("Apple "),并会显示替换错误字符。总大小 = 6 × 1字节 = 6字节。
- 3
在UTF-8中,所有ASCII字符(包括空格)每个都占1字节,表情符号占4字节。
- 4
- 5
UTF-8可以用10字节正确编码全部7个字符,而扩展ASCII无法编码该表情符号。
4. 计算文本存储需求★★★☆☆⏱ 5 min
考试中常见的3-5分题目会要求你计算存储给定文本块所需的总内存大小。无论使用哪种编码,方法都遵循一套简单一致的流程。
一本100页的书使用16位定长Unicode编码。如果每页平均有300个单词,每个单词有5个字符加1个空格,计算总大小(单位:千字节,1 KB = 1000字节)。
- 1
计算每页平均字符数:每个单词5字符 + 1空格 = 每个单词6字符,每页300单词 = 300 × 6 = 每页1800字符。
- 2
16位定长编码意味着16位 = 每个字符占2字节。
- 3
100页总字符数:100 × 1800 = 180,000字符。
- 4
检验你的理解:
如果每个字符占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字节(可变) |
| 网页,向后兼容7位ASCII |
真题中的出现
AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。
- 2022 · 1
内存大小计算题
- 2023 · 1
比较ASCII和Unicode
深入阅读
下一步
字符编码是信息表示中的核心主题,经常以简短计算题的形式出现在CIE 9618的试卷1中。掌握字符计数和存储大小计算的方法是考试中轻松拿分的途径。这个概念是所有文本数据处理、压缩和网络数据传输的基础。接下来,你将继续学习其他常见媒体类型(图像、音频)如何在计算机系统中表示为二进制数据。
