数据表示基础:信息编码系统
规范覆盖范围
|
ASCII 或美国信息交换标准代码是一种标准方法,用于表示所有键盘字符,包括数字和其他常用的函数。最新版本是 8 位代码,允许 256 个字符。
ASCII 的局限性
- 256 个字符不足以表示所有可能的字符、数字和符号。
- 它最初是在英语中开发的,因此它没有代表世界上所有其他语言和文字。
- 互联网的广泛使用使得拥有通用的国际编码系统变得更加重要。
- 平台和程序的范围急剧增加,来自世界各地的更多开发人员使用更广泛的字符。
因此,一个称为 Unicode 的新标准应运而生,它遵循与 ASCII 相同的基本原则,即它的一种形式为标准英语键盘上的每个键盘字符都具有唯一的 8 位代码。
ASCII 代码已被纳入 Unicode,这意味着大写字母 A 的 ASCII 代码为 65,Unicode 代码也相同。Unicode 还包含 29 个国家/地区的国际字符,甚至包括古典和古代字符的转换。
为了表示这些额外的字符,显然需要使用超过 8 位的字符,目前有两种常用的 Unicode 编码(UTF-8 和 UTF-16)。顾名思义,后者是 16 位代码。
奇偶校验位是一种在数据传输过程中检测数据错误的方法。当你发送数据时,它以一系列 0 和 1 的形式发送。
在上图中,Unicode 字符被传输为二进制代码 0111000110101011。在计算机内部或跨网络传输时,此代码很有可能被破坏。
奇偶校验只能检测奇数个错误,不能修复损坏的位。 |
在上面的例子中,奇偶校验位被设置为 0 以保持奇数个 1。检测错误的一种方法是在数据发送前统计每个字节中 1 的数量,以查看是偶数还是奇数。在接收端,可以检查代码以查看数量是否仍然是奇数或偶数。
我们必须记住计算 1,而不是 0,奇偶校验位通常放在 MSB。 |
多数投票是另一种识别传输数据错误的方法。在这种情况下,每个位都被发送三次。因此,二进制代码 1001 将被发送为
111000000111.
当检查数据时,您应该看到三个位的模式。在这种情况下,它是第一个位的 111,然后是 000,依此类推。如果有差异,您可以使用多数投票来查看哪一位出现得最频繁。例如,如果相同的代码 1001 被接收为
101010000111.
您可以假设第一个位应该是 1,因为三个位中有两个是 1,第二个位是 0,因为三个位中有两个是 0。最后两位是 0 和 1,因为这部分代码似乎没有错误。
多数投票可以修复错误,但如果同一个位出现了两个错误,则无法检测到。当然,必须传输三倍的数据。 |
与奇偶校验位一样,校验位是一个添加到数字末尾的值,用于尝试确保数字不会以任何方式被破坏。校验位是通过取构成数字本身的数字并以某种方式处理它们来创建单个数字而生成的。最简单但最容易出错的方法是将数字的各位相加,并不断将各位相加,直到只剩下单个数字。
因此,123456 的各位相加等于 21,2 和 1 又相加等于 3,因此带有校验位的数字变为 1234563。当处理数据时,会重新计算校验位并将其与已传输的数字进行比较。如果校验位相同,则假定数据已更正。如果存在差异,则会生成错误消息。
- 二进制代码可用于表示文本、字符、数字、图形、视频和音频。
- ASCII 和 Unicode 是用于表示字符的系统。
- 数据在处理或传输时,任何时候都有可能被破坏。
- 错误检测和纠正方法包括校验位和多数投票。
练习 解释什么是字符代码。 答案 字符代码使用唯一的数字/代码来表示每个不同的字符 字符 'a' 的 ASCII 二进制代码是 11000012。单词 "be" 如何用 ASCII 的二进制形式编码。 答案 b = 1100010 e = 1100101 一个程序被开发出来,用于将字符串转换为所有字符都为大写。 计算机通过获取每个字符的 ASCII 二进制代码,并对其应用按位与运算来实现这一点,使用掩码 10111112。 使用上面描述的方法,将小写字符 'c',ASCII 代码 11000112,转换为大写字符 'C'。 答案 1000011 描述 ASCII 和 Unicode 之间的区别。 答案 ASCII 每字符使用 7 或 8 位,仅表示拉丁字符和扩展符号。Unicode 每字符使用 16 位,可以表示任何字符和语言。 描述 ASCII 和 Unicode 之间的相似之处。 答案 Unicode 包含 ASCII 作为子集,因此每个 ASCII 字符也可以存储在 Unicode 中。ASCII 字符在 Unicode 中具有与在 ASCII 中相同的字符代码。 比较奇偶校验、校验位和多数投票的实用性。 答案 奇偶校验在数据传输方面速度快且成本相对较低,但只能检测单个错误,无法修复数据;校验位需要大量处理,但可以检测任何数量的错误,无法修复数据;多数投票可以捕获大量错误,并且只需要很少的处理;它可以修复错误,但需要传输三倍的数据量。 字符 a 的 ASCII 二进制代码是 11000012 如果 ASCII 字符在传输过程中被接收,并且最高有效位 (最左侧) 用作奇偶校验位,并且使用奇校验系统,解释字符是否已正确接收以及如何确定这一点。 答案 字符已正确接收,因为 1 的数量是奇数。 一个系统使用多数投票将 ASCII 字符从一个设备发送到另一个设备。接收器为一个 ASCII 字符的传输获得了以下信息 000 010 011 111 110 000 010 011 确定接收器应使用哪些 8 位来表示传输的 ASCII 字符。 答案 0 0 1 1 1 0 0 1. |