这个单元讲计算机如何只用 0 和 1 来存储数字和文字。你会学到二进制(binary)与十进制(denary)互换,用十六进制(hexadecimal)更简短地写出二进制,做二进制加法并识别溢出(overflow),读懂字符编码表,以及算出若干位(bit)最多能表示多少种不同的值。
请到 Cambridge 官网查看最新的 Computer Science 0478 大纲,核对你考试年份的内容要点。如果不确定,可先阅读你的大纲涵盖哪些年份。我们的 Computer Science 学习指南会告诉你这个单元在整个科目中的位置。
学这个单元之前要先会什么?
你需要熟悉 2 的幂(到 128),并会做整数加减。如果 2、4、8、16、32、64、128 这一排数字还不能顺口说出,请先背熟,因为每一课都会用到。
一个示范例子
计算机怎样存储单词 Hi?
第 1 步,找字符编码。 在 ASCII 中,A 是 65,a 是 97。H 是第 8 个字母,所以 H = 65 + 7 = 72。字母 i 是第 9 个字母,所以 i = 97 + 8 = 105。
第 2 步,转成二进制。 72 = 64 + 8,所以 72 是 01001000。105 = 64 + 32 + 8 + 1,所以 105 是 01101001。
第 3 步,把每个字节写成十六进制。 分成两组四位(nibble):0100 1000 是 4 和 8,所以是 48。0110 1001 是 6 和 9,所以是 69。
因此 “Hi” 存储为字节 01001000 01101001,程序员写作 48 69。这一个小例子就用到了本单元的每一课。
应该按什么顺序学这几课?
- 二进制与十进制互换:基础技能,其余各课都靠位值。
- 把十六进制当作简短写法:直接建立在二进制上,每四位为一组。
- 二进制加法与溢出:用到你的二进制熟练度,并解释为什么固定位数有上限。
- 根据给出的例子解释字符编码:说明文字也是以数字存储,用的是同样的二进制技能。
- 位深度与可表示的值:把加法课里的上限变成可用于颜色、字符等的规律。
最后用综合练习检验整个单元。
常见的陷阱有哪些?
- 位值从错误的一端读起。 最右边的位值是 1,不是最左边。
- 十六进制从左边分组。 一定要从右边分组,左边不足就补 0。
- 三个 1 相遇时忘记进位。 二进制中 1 + 1 + 1 = 11:写 1,进 1。
- 把字符和它的数值混淆。 字符 ‘7’ 存储为编码 55,不是数字 7。
- 以为 n 位只能表示 n 个值。 实际是 2n 个值。
练习题应该怎么用?
先在纸上做题,并写出每一步,就像考试一样。写完自己的答案后才打开解答。做错的题,练习页会告诉你应复习哪一课,你也可以把错误记在错题记录里,以后再重做。
你可以在 Python 推理沙盒检查转换,在伪代码追踪训练器检查追踪题,但请先在纸上完成,让沙盒验证你的方法,而不是取代它。
喜欢让老师看出自己哪里出错的学生,常会觉得这个单元很适合作为线上一对一 Computer Science 补习的起点。