“数”不仅仅用来表示“量” ,它还能作为代码(Code)来使用。例如,在我国实行的公民身 份证制度,身份证上有一组 18 位的数为“身份证号码” 。这就是用数字进行编码的例子。再如每一 个学生入学后都会有一个学号,这也是一种编码。
编码的目的之一是为了便于标记特定的对象。为了便于记忆和查找, 在设计编码时需要按照一
1 Chapter
定的规则。这里介绍最常用的几种计算机编码,如 ASCII 码和一些汉字编码。
1.8.1 西文编码
西文编码就是对西文字母、符号或者操作进行的编码,常见的有 ASCII 码(American Standard Code for Information Interchange,美国标准信息交换代码)和 Unicode 码两种。
1.ASCII 码
ASCII 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现 今最通用的单字节编码系统,并等同于国际标准 ISO/IEC 646。目前分为“标准 ASCII 码”和“扩 展 ASCII 码”两种。
(1)标准 ASCII 码。
标准 ASCII 码采用 7 位二进制进行编码(共 8 位,但仅由低 7 位对信息进行编码,最高位为 奇偶校验位),可组合表示 128(2 7 )种状态,对应 128 个(对应十进制取值为 0~127)字符(或 控制符)。其中包括 26 个英文大写字符、26 个英文小写字符、10 个数字字符、33 个标点符号和 33 个控制符。例如大写 A 的 ASCII 码是 65,小写 a 是 97。
【说明】奇偶校验是用来校验信息在传输过程中是否出现了差错的一种方法,分奇校验和偶 校验两种。这两种校验方法分别是在信息传输前通过先在信息码的最高位前面加上校验码, 使得最 终所传输的信息码“1”的个数分别为奇数或偶数,然后在接收端再验证信息码中“1”的个数是否 仍为奇数或偶数,以此来判别信息在传输过程中是否出现了差错。具体将在第 6 章介绍。
为便于书写和记忆,有时也将 ASCII 写作十六进制形式(一个字节恰好可以表示两个十六进 制) ,即将某字符的 ASCII 码二进制数形式转换成十六进制数的形式,再标以 H 表示这是一个十六 进制的数。例如 A 字母的 ASCII 码为 01000001,写成十六进制即 41H;C 字母的 ASCII 码为 01000011,写成十六进制即 43H。
以上 128 个标准 ASCII 码字符分为两部分:
l 第一部分:由 00H 到 1FH 共 32 个,一般用于通信或作为控制之用,有些可以显示在屏 幕上,有些则不能显示,但能看到其效果(如换行、退格)。
l 第二部分:由 20H 到 7FH 共 96 个,这 96 个字符用来表示阿拉伯数字、英文字母大小写 和下划线、括号等符号,都可以显示在屏幕上。
这 128 个字符的编码规则如图 127 所示,Dn 代表码位。例如大写字母 C 的 ASCII 码,只需在 图中对应于字符 C 的位置找出其横坐标 D6D5D4 和纵坐标 D3D2D1D0, 依次按 D6D5D4D3D2D1D0 的顺序排列出来,再在最高位补以 0,即得 C 的 ASCII 码为 01000011。
(2)扩展 ASCII 码。
扩展 ASCII 码采用 8 位二进制进行编码,是对标准 ASCII 码的扩展,是由 IBM 制定的,并非 标准的 ASCII 码。扩展 ASCII 码由 80H 到 0FFH 共 128 个字符,用来表示框线、音标和其他欧洲 非英语系的字母。
1 Chapter
图 127 标准 ASCII 码 2.Unicode 码
Unicode 码最初是 Apple 公司发起制定的通用多文种字符集, 后来被 Unicode 协会开发为能表 示几乎世界上所有书写语言的字符编码标准。Unicode 码包括 UTF8、UTF16 和 UTF32 这 3 种 编码格式,分别指使用 8 位、16 位和 32 位表示字符,在此不作详细介绍。
1.8.2 中文编码
计算机中汉字的表示也是用二进制编码。根据应用目的的不同,汉字编码分为外码、交换码、
机内码和字形码。
1.外码
“外码”也叫输入码,用来解决汉字输入的编码问题,是可用来将汉字输入到计算机中的编码 方式。常用的外码(或输入码)有:拼音码、五笔字型码、自然码、表形码、认知码、区位码和电 报码等。
2.交换码
交换码 (又称 “国标码” ) 是由中国标准总局于 1981 年制定的中华人民共和国国家标准 GB2312
-80《信息交换用汉字编码字符集—基本集》,是在大陆及海外使用简体中文的地区(如新加坡 等)强制使用的唯一中文编码。
在 GB2312-80 标准中共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时 收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。
交换码仅是在计算机内部的一个中文汉字、 字符集标准, 每个汉字的具体编码实现方式则由下面将 要介绍的“区位码”解决。
1 Chapter
3.区位码
“区位码”是国标码的具体编码实现方式。它把国标 GB2312-80 中的汉字、图形符号组成一 个 94×94 的方阵,即 94 个区,每个区中又有 94 个位,对应 94 个汉字或字符,总区位数为 8836 个,即总共可编码 8836 个汉字或字符。区位码用来解决计算机识别汉字的能力,也可作为输入码
(如区位码输入法),但它并不是计算机内部处理汉字的编码方式,在计算机内部汉字编码是由下 面将要介绍的“机内码”进行的。
根据不同区所表示的字符类型可以把整个区位码分成 4 个部分:①01~09 区为特殊符号;
②16~55 区为一级汉字,按拼音排序;③56~87 区为二级汉字,按部首/笔画排序;④10~15 区 及 88~94 区目前暂未使用,留待以后扩展汉字或字符使用。
4.机内码
“机内码”是根据“国标码”的规定确定在计算机内部表示一个汉字的二进制代码。在计算机 内部和磁盘中汉字代码都用机内码表示。
5.字形码
字形码是汉字的输出码,是解决汉字输出的编码方式。输出汉字时都采用图形方式,无论汉字 的笔画多少,每个汉字都可以写在同样大小的方块中。通常用 16×16 点阵来显示汉字。