2.3 非数值数据表示
本节内容相对简单,主要介绍字符和汉字在计算机中的编码表示,重点是ASCII码和汉字编码的层次结构。
核心概念
1. 逻辑数据表示
- 逻辑数据(布尔值)就是
true和false。 - 在计算机中,通常用
1代表true,0代表false。 - 一个n位的数据可以看作n个独立的逻辑变量。
2. 字符表示 (ASCII码)
- ASCII (American Standard Code for Information Interchange):是目前最通用的西文字符编码。
- 标准ASCII:用7位二进制编码,可以表示
个字符。 - 包括:10个数字 (0-9),52个大小写字母 (A-Z, a-z),34个专用符号,32个控制字符。
- 在计算机中通常用一个字节(8位)存储,最高位为0。
- 扩展ASCII:用8位二进制编码,可以表示
个字符。最高位为1的部分定义了额外的符号和图形字符。
易考点:
- 记住常见字符的ASCII码值,特别是:
- '0' 的ASCII码是 48 (0x30)。
- 'A' 的ASCII码是 65 (0x41)。
- 'a' 的ASCII码是 97 (0x61)。
- 利用ASCII码的顺序性进行大小写转换(相差32)或数字字符与数值的转换。
3. 汉字表示 (难点)
汉字数量庞大、字形复杂,其编码也分为多个层次。
汉字输入码:用于从键盘输入汉字,如拼音码、五笔字型码。不唯一,主要为了输入方便。
汉字国标码 (GB 2312):
- 也称交换码,用于不同系统间的信息交换。
- 使用两个字节表示一个汉字,每个字节只使用低7位(兼容标准ASCII)。
- 收录了6763个常用汉字,分为94个区,每个区94个位。
- 区位码:用四位十进制数表示汉字位置,前两位是区号,后两位是位号。
- 国标码与区位码的关系: 国标码(十六进制) = 区位码(十六进制) + 2020H
- 原因:将区号和位号各加上32 (0x20),是为了避免与ASCII中的控制字符冲突。
汉字机内码:
- 汉字在计算机内部存储、处理、传输时使用的编码。
- 目的:为了与西文ASCII码区分开。
- 与国标码的关系: 机内码 = 国标码 + 8080H
- 原因:将国标码的两个字节的最高位都置为
1。这样,在处理一个字节流时,如果字节的最高位是0,则为ASCII字符;如果是1,则它和下一个字节共同组成一个汉字。
- 原因:将国标码的两个字节的最高位都置为
汉字字形码:
- 也称字模码或输出码,用于显示和打印汉字。
- 通常是点阵形式,如
16x16、24x24等。 - 存储空间计算:一个
N x N点阵的汉字所占字节数为。 - 例如,一个
16x16的汉字字模需要字节。
- 例如,一个
难点与考点:
- 理解汉字编码的四个层次及其作用。
- 熟练掌握 区位码 -> 国标码 -> 机内码 的转换过程和原因。这是计算题的常考点。
- 掌握字形码所需存储空间的计算方法。