简介:欢迎来到信息编码世界!
你有没有想过,电脑是怎样分辨什么时候 **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 个位(全球语言)。
- 数字可以是纯二进制(数值)或字符代码(标签)。
- 错误发生在位翻转时;我们使用同位位、多数表决、校验和及校验位来侦测或修正它们。