1.2.3 计算机中的数据编码
数据泛指一切可以被计算机接受并处理的符号,可包括数值、文字、图形、声音、视频等各种信息。在计算机中,数据信息只有转化成数字编码的形式,计算机才能进行处理。编码就是将一类数据按某一编码表转换成对应代码的过程,编码技术应用于许多方面。计算机中只识别0和1码,因此,计算机中的数字、字符及汉字就要用二进制的各种组合形式来表示,这就是二进制的编码系统。
1.数值数据的编码
数值数据指我们日常生活中所说的数或数据,它有正负、大小之分,还有整数和实数之分。数值数据在计算机中是用二进制代码来表示的。我们把一个数在计算机内部表示成的二进制形式称为机器数,原来的数值称为这个机器数的真值。机器数有不同的表示方法,常用的有原码、反码、补码等。
原码是最简单的一种机器数表示方法。原码表示的规则是:最高位(最左边一位)表示数的符号:“0”表示正号,“1”表示负号;其余各位表示数的大小,即这个数的绝对值。
补码表示的规则是,正数的补码即是它本身;负数的补码可以用以下简便的方法求得:符号位取1,其余各位按其真值取反(即0变1,1变0),然后在它的末位上加1。
反码与补码的不同之处仅仅在于负数的反码只求反而不加1。
原码、补码和反码在计算机的应用中有很多有趣的技巧,尤其在各种程序设计大赛中,这几种表示方式的使用经常会有意想不到的奇效,有兴趣的同学可以自行查阅相关资料进一步学习。
2.非数值数据的编码
非数据数据是指除数值数据之外的字符,如各种符号、数字、字母、汉字等。同样,它们也是用二进制代码来表示的。相比数值数据,非数值数据的情况较为复杂,前者只需要掌握数制转换即可,后者则需要针对不同的应用场合,制定不同的规则来使得计算机能够“读懂”并“保存”人类所产生的各种信息。其中最常见的是字符编码、BCD码和各种汉字编码。
(1)字符编码
在计算机中使用最广泛的字符编码是美国标准信息交换码(American Standard Code for Information Interchange,ASCII),ASCII码被国际化标准组织确定为世界通用的国际标准,如表1-2所示。
表1-2 ASCII字符编码表
ASCII码将英文字母及英式键盘的所有字符均使用一个7位二进制码来表示,而进入计算机之后则使用8位来表示,因此需要在前面补一个0,称为基本ASCII码。基本ASCII码共有128个字符,其中95个编码对应着计算机终端输入并可以显示的字符,如英文大小写字母各26个、0~9十个数字符、标点符号等,另外33个字符是控制码,控制着计算机某些外围设备的工作特性和软件运行情况。除此之外还存在扩展ASCII码,这种编码第一位是1,存放其他的特殊字符、外来语字母和常用图形符号。
如果需要确定字母、数字及各种符号的ASCII码值,可在表中查出其所在的位置,根据字符所在行的高3位(d6d5d4)和列的低3位(d3d2d1d0)编码查出。
例如,字符“A”的ASCII码是1000001,若用十六进制表示为41H,若用十进制表示为65D。
(2)BCD编码
将十进制数表示为二进制编码的形式,称为十进制数的二进制编码,简称二—十进制编码或BCD(Binary-Coded Decimal)码。最常用的编码方式称为8421码,其表示方法是每一位十进制数用4位二进制数表示,从左到右分别为8、4、2、1权码,4位二进制数有16种编码,只取0000~1001 10种表示十进制数中的0~9。BCD码利用了4个位来储存一个十进制的数码,不仅使二进制和十进制之间的转换得以快捷的进行,连同对十六进制之间的转换也非常方便。这种编码技巧最常用于需要对很长的数字串作准确的计算的地方,因为相对于一般的浮点式记数法,采用BCD码既可保存数值的精确度,又可免去使电脑作浮点运算时所耗费的时间。
(3)汉字编码
汉字编码主要用于解决汉字输入、处理和输出的问题。汉字编码在计算机中的应用从一开始就遇到了相当的困难,最基本的一个原因是在于汉字数量庞大。我国文化源远流长,汉字总数已经超过60000个,尽管专家研究将其中约3000多个汉字作为常用汉字进入计算机,但这个数字仍然比英文字母要困难得多。因此,汉字输入与编码需要增加额外的标准设计工作。除此之外,汉字还存在古今字体、繁简字体、正异字体,多音字体等其他问题。
汉字的编码主要分为4类:
●汉字输入码。汉字输入码也称外码,是用来将汉字输入计算机中的一组键盘符号。常用的输入码有拼音码、五笔字型码。
●汉字内部码。每一个汉字都有确定的二进制代码,在计算机内部汉字代码都用机内码,在磁盘上记录汉字代码也使用机内码。
●汉字字形码。字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。通常用16×16点阵来显示汉字。
●汉字交换码。计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外。而二进制代码使用起来是不方便的,于是需要采用信息交换码。我国在1981年制定了中华人民共和国国家标准《信息交换用汉字编码字符集——基本集(GB2312—80)》,即国标码。