1.2.3 信息编码
数据泛指一切可以被计算机接受并处理的符号,可包括数值、文字、图形、声音、视频等各种信息。在计算机中,数据信息只有转换成数字编码的形式,计算机才能进行处理。编码就是将一类数据按某一编码表转换成对应代码的过程,编码技术应用于许多方面。计算机中只识别0和1码,因此,在计算机中对数字、字符及汉字就要用二进制的各种组合形式来表示,这就是二进制的编码系统。
1.数值数据的编码
数值数据指我们日常生活中所说的数或数据,它有正负、大小之分,还有整数和实数之分,数值数据在计算机中是用二进制代码来表示的。我们把一个数在计算机内部表示成的二进制形式称为机器数,原来的数称为这个机器数的真值。机器数有不同的表示方法,常用的有原码、反码、补码等。
原码是最简单的一种机器数表示方法。原码表示的规则是:最高位(最左边一位)表示数的符号:“0”表示正号,“1”表示负号;其余各位表示数的大小,即这个数的绝对值。
补码表示的规则是,正数的补码即是它本身;负数的补码可以用以下简便的方法求得:符号位取1,其余各位按其真值取反(即0变1,1变0),然后在它的末位上加1。
反码与补码的不同之处仅仅在于负数的反码只求反而不加1。
对于小数的表示方法有两种,即定点数表示和浮点数表示。
2.非数值数据的编码
非数据数据是指除数值数据之外的字符,如各种符号、数字、字母、汉字等。同样,它们也是用二进制代码来表示的。
(1)字符编码
在计算机中使用最广泛的字符编码是ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),ASCII码被国际化标准组织确定为世界通用的国际标准。如表1.2.2所示。
表1.2.2 ASCII字符编码表
表中可以看出,每个字符用7位二进制码表示。一个字符在计算机内用8位表示,基本ASCII码最高位为0,扩充ASCII码的最高位为1。基本ASCII码共有128个字符,其中95个编码对应着计算机终端输入并可以显示的字符,如英文大小写字母各26个、0~9十个数字符、标点符号等,另外33个字符是控制码,控制着计算机某些外围设备的工作特性和软件运行情况。
如果需要确定字母、数字及各种符号的ASCII码值,可在表中查出其所在的位置,根据字符所在行的高3位(d6d5d4)和列的低3位(d3d2d1d0)编码查出。
例如,字符“A”的ASCII码是1000001,若用十六进制表示为41H,若用十进制表示为65D。
(2)二~十进制的数字编码
我们日常生活中习惯使用十进制数,为了使计算机能识别、存储十进制数,并能直接用十进制数形式进行运算,就需要对十进制数进行编码,即用0和1的不同组合形式来表示十进制数的各个数位上的数字,进而表示一个十进制数。
将十进制数表示为二进制编码的形式,称为称为十进制数的二进制编码,简称二~十进制编码或BCD(Binary Coded Decimal)码。
最常用的二~十进制的数字编码是8421码,其表示方法是每一位十进制数用4位二进制数表示,从左到右分别为8、4、2、1权码,4位二进制数有16种编码,只取0000~1001十种表示十进制数中的0~9。表1.2.3列出十进制数与BCD码以及二进制数的对比关系。
表1.2.3 BCD码与十进制数、二进制数的对比关系
(3)汉字编码
汉字编码主要用于解决汉字输入、处理和输出的问题。根据对汉字的输入、处理、输出的不同要求,汉字的编码主要分为4类:汉字输入码、汉字内部码、汉字字形码、汉字交换码。
①汉字输入码(外码)。输入汉字时使用的编码称为汉字输入码,也称为汉字的外码(简称外码),其作用是实现按照某一方式输入汉字。目前我国的汉字输入码编码方案有上千种,主要分为4类:数字编码(国际区位码、电报码)、拼音编码(全拼、双拼)、字型编码(五笔)和音形编码(自然码)。
②汉字内部码(内码)。汉字内部码是指在计算机内部处理汉字信息时所使用的汉字编码,汉字内部码也称为汉字机内码(简称内码)。汉字输入计算机后,计算机系统一般都会把各种不同的汉字输入编码转换成唯一的机内码。在汉字信息系统内部,对汉字信息的采集、传输、存储、加工运算的各个过程都要用到汉字机内码。
③汉字字形码(字模码)。汉字字形码是指文字字形存储在字库中的数字化代码。当需要显示或打印汉字时,通常是把单个汉字离散成网点,每点以一个二进制位表示,由此组成的汉字点阵字形(字模)称为汉字字形码,一个汉字信息系统所有的汉字字形码的集合构成了该系统的汉字库。
根据输出汉字的要求不同,汉字点阵的多少也不同。汉字点阵点数的多少直接影响汉字的造型和质量,点数越多,汉字的质量越高。目前在微机中,普遍采用的16×16、24×24、32×32、48×48等点阵。从使用上分为简易型、普通型、提高型、精密型,不同字体的汉字需要不同的点阵字库。字模点阵信息量很大,占存储空间也很大。以16×16点阵汉字为例,每个汉字就要占用16×16/2=32(B)。
根据汉字库中汉字字形码的存储方式的不同,可把汉字库分为软字库和硬字库两种。软字库是将汉字库文件存储在软盘或硬盘中;硬字库是利用汉卡(由Rom和Ram芯片制成)将汉卡安装在机器的扩展槽中。
④汉字交换码。
GB 2312—1980标准:为了适应汉字信息处理技术日益发展的需要,国家标准局于1981年发布了《中华人民共和国标准信息交换用汉字编码字符集·基本集》,简称GB 2312—1980,这种编码简称为国标码。共收录包括一级汉字3755个和二级汉字3008个,各种符号682个,总计7445个。
国标码规定每个字符由2个字节代码组成,每个字节最高位为0,其余7位用于组成各种不同的码值。
GBK标准:是GB 2312—1980的扩展,共有21883个汉字和符号。
ISO 10646标准:国际标准化组织公布的一个标准,它包括了世界上的各种语言,GBK包含在其中。
从汉字编码的转换角度,图1.2.1显示了几种编码之间的关系,其间都需要各自的转换程序来实现。
图1.2.1 各种编码之间的关系