欢迎来到数据表示法!

你有没有想过,电脑本质上只是一堆微小的开关,它是如何呈现高清电影,或记录你在游戏中的高分呢?这一切都要归功于数据表示法(Data Representation)。在本章中,我们将学习电脑如何将人类的数字和文字世界,转换成它们自己的语言:二进制(Binary)

别担心,如果你觉得数字有点吓人——我们会把所有内容拆解成简单的步骤。把它想象成学习一种秘密代码吧!


1. 三种数制

为了理解电脑,我们需要认识三种特定的“语言”或数制:

A. 十进制 (Denary / Base-10)

这是我们每天使用的“人类”系统(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)。我们使用 10 个数字是因为我们有 10 根手指!

B. 二进制 (Binary / Base-2)

这是“电脑”系统。它只使用两个数字:01
类比:想象一个电灯开关。它只能是关闭(0)或开启(1)。电脑是由数十亿个这种微小的开关组成的。

C. 十六进制 (Hexadecimal / Base-16)

这个系统使用 16 个符号。由于我们在 9 之后数字就不够用了,所以我们使用字母:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10), B (11), C (12), D (13), E (14), F (15)
为什么要用十六进制? 它比二进制短得多,对人类来说更容易阅读且不容易出错。

快速回顾:
- 十进制: 人类使用 (0-9)
- 二进制: 电脑使用 (0-1)
- 十六进制: 人类方便使用的速记法 (0-F)


2. 数制转换

能够进行数制转换是 GCE O-Level 计算机科学的核心技能。让我们一步步来学习如何操作。

二进制转十进制

要将二进制转换为十进制,我们使用位值表(Place Value Table)。在二进制中,每向左移动一位,数值就会加倍。

范例:将 10110010 转换为十进制
1. 画出表格(从右边的 1 开始,向左移动时数值加倍):

\( \begin{array}{|c|c|c|c|c|c|c|c|}\n\hline\n128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 \\\n\hline\n1 & 0 & 1 & 1 & 0 & 0 & 1 & 0 \\\n\hline\n\end{array} \)

2. 将下方对应数字为 '1' 的数值加起来:
\( 128 + 32 + 16 + 2 = 178 \)

十进制转二进制

使用减法法(Subtraction Method)
口诀:“找出能容纳的最大值”。

范例:将 75 转换为二进制
1. 128 能放入 75 吗?不能 (0)
2. 64 能放入 75 吗?能!(1)。余数:\( 75 - 64 = 11 \)
3. 32 能放入 11 吗?不能 (0)
4. 16 能放入 11 吗?不能 (0)
5. 8 能放入 11 吗?能!(1)。余数:\( 11 - 8 = 3 \)
6. 4 能放入 3 吗?不能 (0)
7. 2 能放入 3 吗?能!(1)。余数:\( 3 - 2 = 1 \)
8. 1 能放入 1 吗?能!(1)。余数:0
结果:01001011

十六进制转二进制

这是最简单的!每个十六进制位数正好等于 4 个二进制位(bits)(称为一个半字节 nibble)。

范例:将 2A 转换为二进制
1. 将 '2' 转换为 4 位二进制:0010
2. 将 'A' (即 10) 转换为 4 位二进制:1010
3. 合并在一起:00101010

关键提示: 做二进制转换时一定要使用表格!这能防止简单的加法错误。


3. 二补数 (Two's Complement - 负数表示法)

一般的二进制只能表示正数。为了表示负数,我们使用二补数(Two's Complement)
刚开始觉得复杂别担心;只要遵循“反转并加 1”的规则即可!

如何将正数转换为负数(例如:-5):

1. 先写出该正数的二进制版本(使用 8 位元):
\( 5 = 00000101 \)

2. 反转(Flip)所有位(0 变 1,1 变 0):
\( 11111010 \)

3. 将结果加 1
\( 11111010 + 1 = 11111011 \)
结果:11111011 代表 -5。

为什么要这样做?

在二补数中,最高位(Most Significant Bit,最左边的那一位)充当负号。在 8 位系统中,第一栏实际上是 -128 而不是 +128。

快速回顾:
1. 写出正数的二进制。
2. 反转位。
3. 加 1。


4. 文字表示法 (ASCII)

电脑不知道字母 'A' 是什么,它们只认识数字。因此,我们使用一本“代码本”叫做 ASCII (美国标准信息交换码)。

8 位扩展 ASCII

8 位扩展 ASCII 中,每个字符(字母、数字或符号)都被分配一个 0 到 255 之间的唯一数字。

运作方式:
- 当你在键盘上按下 'A' 时,电脑看到的是十进制数字 65
- 然后它将 65 转换为二进制:01000001
- 这串二进制代码就是储存在内存中的内容。

你知道吗?大写 'A' (65) 和小写 'a' (97) 之间的差值正好是 32。这使得电脑只需改变一个位,就能轻松在大小写之间切换!

文字表示法总结:
  • 字符使用 ASCII 标准对应到数字。
  • 8 位编码意味着我们可以表示 \( 2^8 \) (256) 种不同的字符。
  • 这包括英文字母、标点符号和特殊符号。

章节总结 - 核心重点

1. 二进制 是电脑使用的基于 2 的系统(由 0 和 1 组成)。

2. 十六进制 是基于 16 的系统,使用它是因为它比长串的二进制更容易让人阅读和书写。

3. 数制转换 最好使用位值表(1, 2, 4, 8, 16, 32, 64, 128)来完成。

4. 二补数 是在二进制中表示负数的方法。记住:反转并加 1。

5. ASCII 是标准“代码”,让电脑能将文字表示为二进制数字。

要避免的常见错误: 在做二补数时,许多学生会忘记在最后加 1。最后一步一定要再三检查!