简介:欢迎来到信息编码世界!

你有没有想过,电脑是怎样分辨什么时候 **1** 代表数字“一”,而什么时候 **1** 又只是你在电子邮件中打出来的一个字符?又或者,电脑是怎样确保信息传送到世界各地时,不会变得乱七八糟的呢?

在这章中,我们将深入探讨信息编码系统 (Information Coding Systems)。这就是电脑用来将人类符号转换成 1 和 0 的“秘密语言”。我们会研究文字是如何表示的,以及电脑如何在数据传输过程中找出错误。别担心内容看起来很多——我们会一点一点地为你拆解!


4.5.5.1 十进制数字的字符形式

我们很容易会假设数字 5 对电脑来说永远只是“5”。然而,电脑会根据使用方式的不同,以不同的方式处理数字。

二进制代码与字符代码的区别

  • 纯二进制表示 (Pure Binary Representation): 当电脑需要进行数学运算时使用。如果你想计算 \(5 + 2\),电脑会将 5 的数值视为 \(101_2\)。
  • 字符代码表示 (Character Code Representation): 当电脑将数字视为文字时使用。如果你在 Word 文档中输入数字“5”,电脑并不在意它的数学数值,它只需要一个“标签”或“代码”来决定要在屏幕上显示哪种字体。

常见错误: 学生经常误以为字符“5”在内存中存储为二进制 \(101_2\)。事实上,在 ASCII 系统中,字符“5”实际上存储为代码 53(二进制 \(00110101_2\))!

重点总结: 计算时使用纯二进制,而在屏幕上显示文字时则使用字符代码


4.5.5.2 ASCII 与 Unicode

为了确保所有电脑都能理解相同的字符,我们使用标准化系统。你可以把它们想象成一本万用字典,每个字母都有一个特定的页码。

1. ASCII (美国信息交换标准代码)

ASCII 是最早期的主要系统之一。它最初使用 7 个位 (bits),允许表示 \(2^7 = 128\) 种不同的字符。这已经足够表示:

  • 英文字母(大小写)
  • 数字 0-9
  • 标点符号
  • 控制字符(如“Enter”或“Delete”)

2. Unicode

随着互联网的发展,128 个字符已经不够用了。我们需要中文、阿拉伯文、表情符号 (Emojis) 以及数学符号。

Unicode 的出现就是为了解决这个问题。它使用更多位(通常为 16 或 32 个位)。由于它有更多的位,它可以表示数百万种不同的字符,几乎涵盖了地球上所有的语言。

比喻:ASCII 就像是一个只有 128 个信箱的小型地方邮局;而 Unicode 就像是一个巨大的全球物流中心,拥有数百万个信箱,服务全世界的人。

快速回顾:为什么要引入 Unicode?
因为 ASCII 没有足够空间容纳非英语字符或特殊符号。Unicode 为每个字符提供唯一的代码,无论使用什么语言或平台,都能准确显示。


4.5.5.3 错误检查与更正

当数据从一个地方传送到另一个地方(例如下载文件)时,干扰或“杂讯”可能会导致 1 变成 0。我们需要一些方法来抓出这些错误!

1. 同位检查 (Parity Bits)

在二进制字符串中加入一个额外的位(同位位),使 1 的总数变为偶数奇数

  • 偶校验 (Even Parity): 1 的总数(包含同位位)必须是偶数。
  • 奇校验 (Odd Parity): 1 的总数必须是奇数。

示例(偶校验): 你想传送 \(1101101\)。这里有五个 1。为了让总数变成偶数,同位位必须设为 1。最终的代码是 \(1101101\mathbf{1}\)。

2. 多数表决 (Majority Voting)

这是一种聪明但“昂贵”的错误修正方法。电脑会将每个位传送三次。如果其中一个位变了,电脑会查看另外两个位,并以“多数”的结果为准。

示例: 你想传送一个 1。你传送 1 1 1。如果接收端收到 1 0 1,它会认定 0 是错误,并将其更正回 1。

3. 校验和 (Checksums)

电脑会对传送中的数据执行一个数学公式,并产生一个总数(校验和)。这个总数会随数据一起传送。接收端会执行相同的公式,如果算出的结果与收到的校验和不符,就代表发生了错误。

4. 校验位 (Check Digits)

你在日常生活中每天都会看到这些,例如条形码和书本上的 ISBN 号码。校验位是长识别号码末尾的一个数字,它是根据其他数字计算出来的。如果你输入错误,计算结果将与校验位不符,系统就会跳出错误提醒。

你知道吗? 校验位是专门为了捕捉人为错误而设计的,例如打字时将两个数字前后颠倒(例如将 54 打成了 45)。

错误检查总结表:

  • 同位位 (Parity Bits): 简单,但无法修正错误(只能侦测)。
  • 多数表决 (Majority Voting): 可以修正错误,但会多消耗 3 倍数据量。
  • 校验和 (Checksums): 非常适合大型数据块。
  • 校验位 (Check Digits): 用于数据输入检查(条形码/ID)。

如果刚开始觉得二进制数学有点棘手,别担心!只要记住我们的目标:我们需要将人类的字符表示为数字,并确保这些数字在透过电脑传输时不会改变。

考试重点总结:

  • ASCII = 7 或 8 个位(仅限英语)。
  • Unicode = 16 或 32 个位(全球语言)。
  • 数字可以是纯二进制(数值)或字符代码(标签)。
  • 错误发生在位翻转时;我们使用同位位、多数表决、校验和及校验位来侦测或修正它们。