数据表示 (Data Representation) — A-Level Computer Science 学习指南
适合谁:A-Level Computer Science 参加 A-Level Computer Science 的考生。
覆盖内容:数制转换、有符号整数补码表示、浮点数存储、ASCII与Unicode字符编码、位图矢量图对比及音频编码全考点。
前置知识:基础编程概念;Python / Java / VB 任一种。
关于练习题:下文「练习题」一节的所有题目均为我们按 A-Level Computer Science 风格编写的原创题目 (original problems),仅用于教学。它们不是 Cambridge International 真题的复制,措辞、数值或语境可能不同。请把它们当作练手用;评分细则请对照 Cambridge 官方 mark scheme。
1. 什么是数据表示?
数据表示是计算机存储、传输信息的核心规则:计算机所有硬件只能识别高低电平对应的二进制(binary)0和1,因此人类使用的数字、文字、图像、声音等各类信息,都需要按照统一规则转换为二进制格式才能被计算机处理,这套转换规则就是数据表示。 本章节是A-Level Computer Science Paper 1的核心必考内容,占分约10-15分,同时也是后续处理器运算、文件存储、数据压缩等章节的基础,需要熟练掌握所有子考点。
2. 数制(Number Bases):二进制、十进制、十六进制
数制是计数的规则,核心参数是基数(radix),即每一位可以使用的不同符号的数量:
- 十进制(decimal):基数为10,使用0-9共10个符号,是人类日常使用的数制
- 二进制(binary):基数为2,使用0、1共2个符号,是计算机原生使用的数制
- 十六进制(hexadecimal):基数为16,使用0-9、A-F共16个符号,用来简化二进制的书写(1位十六进制对应4位二进制)
考官常考三类转换,通用规则如下:
- 任意进制转十进制:按权展开求和,第n位(从右往左数,从0开始计数)的权值为 范例:
- 十进制转二进制:整数部分除2取余、逆序排列;小数部分乘2取整、顺序排列
- 二进制↔十六进制:整数部分从右往左每4位一组,小数部分从左往右每4位一组,不足补0,逐组转换 范例:
3. 有符号整数的补码(Two's Complement)表示
如果要存储带正负号的整数,最常用的方法是补码(two's complement):
- 规则:n位二进制的最高位为符号位,0代表正数,1代表负数,剩余n-1位存储数值
- n位补码的取值范围为,例如8位补码的范围是-128到+127
负数补码的计算方法:先写出对应正数的n位二进制表示,按位取反后加1,符号位参与运算。 范例:求8位补码下-19的表示:
- +19的8位二进制为
00010011 - 按位取反得到
11101100 - 加1得到
11101101,即为-19的8位补码
补码的优势是可以直接用加法实现减法运算,不需要额外的减法电路,考官常考补码的加减运算验证。
4. 浮点数(Floating-point)表示
浮点数用来存储带小数的数值,类似科学计数法,标准结构分为三部分:
- 符号位(1位):0代表正数,1代表负数
- 阶码(exponent):存储指数的偏移码,决定数值的大小范围
- 尾数(mantissa):存储有效数字,决定数值的精度
考纲要求二进制浮点数必须规格化:即尾数的最高位必须为1,这样可以保证存储的精度最大化。 范例:将二进制数转为规格化浮点数:
- 调整为
- 尾数为1.011101,省略整数位的1(默认存在)后存储小数部分
011101 - 阶码为3,加上偏移量(比如5位阶码偏移量为16)后存储为
10011
5. 字符编码(Character Encoding):ASCII、Unicode
字符编码是将文字、符号转换为二进制的规则,考纲要求掌握两类:
- ASCII(美国信息交换标准代码):7位编码,最多存储128个字符,包括英文字母、数字、标点符号和控制字符,扩展ASCII为8位,最多存储256个字符,仅能支持英文和少量西欧语言
范例:大写字母'A'的ASCII码为十进制65,对应二进制
01000001 - Unicode(统一码):为支持全球所有语言设计,包含超过14万个字符,常用的实现方式为UTF-8:可变长编码,1-4字节存储一个字符,英文字符占1字节,和ASCII完全兼容,中文占3字节,是当前互联网的通用编码。
6. 图像与音频编码
除了数字和文字,多媒体信息也需要转成二进制存储,考纲要求掌握两类:
图像编码
- 位图(bitmap image):由像素(pixel)矩阵组成,每个像素存储颜色值,色深(每个像素的二进制位数)决定可显示的颜色数量,分辨率越高、色深越大,文件越大,放大后会出现锯齿失真,适合存储照片
- 矢量图(vector image):用数学公式记录图形的坐标、形状、颜色、线条宽度等属性,放大不会失真,文件大小和图形复杂度相关,和尺寸无关,适合存储logo、插画、工程图纸
音频编码
声音是模拟信号,转成数字信号需要经过采样,核心参数:
- 采样率(sampling rate):每秒采集声音样本的次数,单位为Hz,常用44.1kHz(CD音质)
- 采样深度(sample depth):每个样本存储的二进制位数,常用16位
- 音频文件大小计算公式:
7. 常见陷阱 (Common Pitfalls)
- 错误:二进制转十六进制时从左到右分组,忘记补前导/后缀0;原因:混淆分组的起点规则;正确做法:以小数点为界,整数部分从右往左4位一组,小数部分从左往右4位一组,不足的位置补0。
- 错误:计算负数补码时只取反不加1,或者符号位不参与取反;原因:混淆反码和补码的计算规则;正确做法:求n位负数补码时,先写对应正数的n位二进制,所有位(含符号位)按位取反后加1。
- 错误:计算音频/位图文件大小时忘记除以8;原因:混淆位(bit)和字节(byte)的单位;正确做法:采样深度、色深的单位都是位,转字节需要除以8。
- 错误:浮点数规格化时保留尾数最高位为0;原因:忘记规格化的精度要求;正确做法:二进制浮点数规格化必须保证尾数最高位为1,通过调整阶码实现。
8. 练习题 (A-Level Computer Science 风格)
题1
题干:将十六进制数3E7D转换为二进制和十进制,写出完整步骤。
解答:
- 转二进制:每个十六进制位对应4位二进制:
3=0011,E=1110,7=0111,D=1101,合并后为0011111001111101_2 - 转十进制:按权展开:
题2
题干:用8位补码计算29 - 47,写出运算过程并验证结果。
解答:
- +29的8位补码为
00011101 - 求-47的8位补码:+47的二进制为
00101111,取反得11010000,加1得11010001 - 相加:
00011101 + 11010001 = 11101110 - 结果转十进制:补码
11101110减1得11101101,取反得10010010,对应-18,验证29-47=-18,计算正确。
题3
题干:某双声道音频的采样率为48kHz,采样深度为24位,时长为3分钟,求文件大小为多少MB(保留1位小数,)。 解答: 代入公式: 转MB:
9. 速查表 (Quick Reference Cheatsheet)
| 知识点 | 核心规则 |
|---|---|
| 数制转换 | 二进制↔十进制:按权展开/除2取余;二进制↔十六进制:4位分组转换 |
| 补码 | n位范围:;负数补码=正数反码+1 |
| 浮点数 | 结构:符号位+阶码+尾数;规格化要求尾数最高位为1 |
| 字符编码 | ASCII:7位128字符;UTF-8:可变长,兼容ASCII,支持全球语言 |
| 图像 | 位图放大失真,矢量图放大不失真 |
| 音频 | 文件大小 = |
10. 接下来怎么学
本章节是计算机科学的基础,后续的处理器运算、数据压缩、文件存储等章节都会用到这里的知识点,尤其是补码运算和存储容量计算,会在Paper 1的系统架构题和Paper 2的编程题中交叉考察,建议你配合近5年的真题专项练习巩固考点。 如果你在刷题过程中遇到任何数据表示相关的疑问,都可以随时到小欧提问,我们会提供针对性的讲解和练习资源。
本指南内容对齐 CIE 剑桥国际 AS & A Level 计算机科学 9618 考纲。OwlsAi 与 Cambridge Assessment International Education 无附属关系。