首页 理论教育计算机中非数值型数据的表示及编码方法

计算机中非数值型数据的表示及编码方法

【摘要】:表1-4展示了基本ASCII字符集及其码值。2.汉字字符编码汉字编码是为汉字设计的一种便于输入计算机的代码。图1-19汉字信息处理流程计算机中汉字的表示也是用二进制编码。外码也称输入码,是用来将汉字直接输入计算机中的一组键盘符号。表1-5用十进制数表示的汉字编码方式称为区位码。例如,“保”字在代码表中处于17区第3位,区位码即为“1703”,相应的国标码为“0011000100100011B”,用十六进制表示为“3123H”。通常用16×16点阵来显示汉字。

1.西文字符ASCII编码

目前使用最广泛的西文字符集及其编码是ASCII字符集和ASCII码(American Standard Code for Information Interchange,美国标准信息交换代码)。ASCII被国际标准化组织(International Organization for Standardization,ISO)批准为国际标准。

基本的ASCII字符集共有128个字符,其中有96个可打印字符,包括常用的字母、数字、标点符号等,另外还有32个控制字符。标准ASCII码使用7位二进制位对字符进行编码,对应的ISO标准为ISO646标准。表1-4展示了基本ASCII字符集及其码值。

字母和数字的 ASCII码值的记忆是非常简单的。只要记住了一个字母或数字的 ASCII码值(如记住A为65,0的ASCII码值为48),知道相应的大小写字母之间差32,就可以推算出其余字母、数字的ASCII码值。

表1-4 ASCII码表

续表

虽然标准ASCII码是7位编码,但由于计算机基本处理单位为字节(1 byte = 8 bit),所以一般仍以一个字节来存放一个ASCII字符。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为0(在数据传输时可用作奇偶校验位)。

2.汉字字符编码

汉字编码是为汉字设计的一种便于输入计算机的代码。汉字也是字符,与西文字符相比,汉字数量大,字形复杂,同音字多,这就给汉字在计算机内部的存储、传输、交换、输入和输出等带来了一系列的问题。为了能直接使用西文标准键盘输入汉字,必须为汉字设计相应的编码,以适应计算机处理汉字的需要。汉字信息处理系统一般包括编码、输入、存储、编辑、输出和传输。汉字信息处理中各种编码及流程图如图1-19所示。

图1-19 汉字信息处理流程

计算机中汉字的表示也是用二进制编码。根据应用目的不同,汉字编码分为外码、国标码、机内码、字形码和地址码。

(1)外码(输入码)。

外码也称输入码,是用来将汉字直接输入计算机中的一组键盘符号。常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等,一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据需要进行选择。

(2)国标码。

计算机内部处理的信息都是用二进制形式,汉字也是。中国国家标准总局1981年实施了中华人民共和国国家标准《信息交换用汉字编码字符集-基本集》(GB 2312—1980),即国标码。

区位码是国标码的另一种表现形式,把国标码中的汉字、图形符号组成一个94×94的方阵,分为94个“区”,每区包含94个“位”,共94×94=8 836个码位。这种表示方式也称区位码。(www.chuimin.cn)

其中,01~09区收录除汉字外的682个字符;10~15区为空白区,没有使用;16~55区收录3 755个一级汉字,按拼音排序;56~87区收录3 008个二级汉字,按部首/笔画排序;88~94区为空白区,没有使用。

举例来说,“啊”字是GB 2312—1980编码中的第一个汉字,它位于16区的01位,所以它的区位码就是1601,如表1-5所示。

表1-5 16区字符编码集

在GB2312—1980中共收录了汉字6 763个,其中常用的一级汉字有3 755个,将它们按拼音字母顺序排列,同音字以笔画为序;二级汉字有3 008个,按字典中的部首顺序排列;还有标点及图形符号687个。

表1-5用十进制数表示的汉字编码方式称为区位码。国标码是在区位码的基础上稍加修改而来的。例如,“保”字在代码表中处于17区第3位,区位码即为“1703”,相应的国标码为“0011000100100011B”,用十六进制表示为“3123H”。将区位码的区码“17”加32(十六进制数为20H)转换成二进制便是国标码的高位代码“00110001B”,用十六进制表示即为“31H”,将区位码的位码“03”加32(十六进制数为20H)转换成二进制表示即为“23H”。一般来说,国标码是在区位码的基础上区值和位值分别加上20H而形成的,这样做可以防止与ASCII的前34个控制字符发生冲突。

国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保”字,国标码为31H和23H ,而西文字符“1”和“#”的ASCII码也为31H和23H,假如内存中有两个字节为31H和23H,这到底是一个汉字,还是两个西文字符“1”和“#”?于是就出现了二义性。显然,国标码是不可能在计算机内部直接采用的,于是,汉字的机内码采用变形国标码,其变换方法为:将国标码的每个字节都加上128,即将两个字节的最高位由0改1,其余7位不变,也就是如果国标码是十六进制的,直接加上8080H(10000000B =128=80H)即可。例如,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,高位改1为10110001B和10100011B,即为B1A3H,因此,“保”字的机内码就是B1A3H。显然,汉字机内码的每个字节都大于128,这就解决了与西文字符的ASCII冲突的问题。

综上所述,汉字机内码、区位码、国标码之间的联系与区别可以用下面的公式表示:

机内码高位=区码+20H+80H=国标码高位+80H=区码+A0H

机内码低位=位码+20H+80H=国标码低位+80H=位码+A0H

(3)机内码。

根据国标码的规定,每一个汉字都有确定的二进制代码,在计算机内部汉字代码都用机内码,在磁盘上记录汉字代码也使用机内码。现在我国的汉字信息系统一般都采用与ASCII码相容的位码方案,用两个二位码字符构成一个汉字机内码。

(4)字形码。

字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。通常用16×16点阵来显示汉字。

(5)地址码。

地址码是指汉字库中存储汉字字形信息的逻辑地址码。它与汉字内码有着简单的对应关系,以简化内码到地址码的转换。