1.2.4 数据在计算机中的编码
由于计算机只能识别和处理二进制代码,所以在计算机内部,所有数据都必须被转换为二进制编码。
1.西文字符编码
计算机中西文字符主要使用ASCII码。ASCII码是“美国信息交换标准代码”(American Standard Code for Information Interchange)的简称,是国际上使用最广泛的一种字符编码。ASCII码有7位的(即基本ASCII码)和8位的(即扩展ASCII码)两种,国际通用的是7位ASCII码。
基本ASCII码的编码规则是:7位ASCII码,即每个字符用7位二进制数(b6b5b4b3b2b1b0)来表示,可表示27=128个字符,其中包括95个普通字符和33种控制字符。在计算机中,每个ASCII码字符可存放在一个字节中,最高位(b7)为校验位用“0”填充,后7位为编码值,如表1-3所示。
表1-3 ASCII码表
续表
从表中容易看出:
(1)对字符的ASCII码值来说,空格<数字<大写字母<小写字母。
(2)三组常用字符——阿拉伯数字、大写英文字母及小写英文字母,在 ASCII 码表中,其值分别都是连续递增的。也就是说,知道了每组字符中的第一个字符的ASCII码值,则该组中的其他字符的ASCII码值都是可以计算出来的。如:若已知字符“A”的ASCII码值为65,则可计算出字符“E”的ASCII码值为69。
此外,ASCII码表中的可打印字符在PC机标准键上都可以找到,当通过键盘输入字符时,每个字符实际是按ASCII码转换为相应二进制数字串,屏幕上显示相应字符,同时将该字符的ASCII码送入计算机的存储器中。
前面介绍的是7位ASCII码,即基本ASCII码。为了增加字符的使用数量,把原来的7位码扩展成8位码,可以表示28=256个字符,即扩展ASCII码。扩展ASCII码的最高位就不是0,而是1了。
2.汉字编码
ASCII码只对英文字母、数字和标点符号进行了编码。为了使计算机能够处理、显示、打印、交换汉字字符,同样也需要对汉字进行编码。
由于汉字数量巨大,用一个字节远不足表示全部汉字,所以汉字通常用两个字节来表示,汉字编码比英文字符编码要复杂得多。
汉字信息的编码体系主要有国标码、区位码、机内码、输入码和字形码。
(1)国标码
1980年,国家标准局颁布了用于信息处理的汉字国家标准GB2312—80《国家信息交换用汉字编码字符集(基本集)》,简称“国标码”。该标准收录了6763个常用汉字(其中一级常用汉字3755个,二级次常用汉字3008个),以及英、俄、日文字母与其他符号682个,共有7445个符号。任何汉字编码都必须包括国标码规定的这两级汉字。
世界上使用汉字的地区除了中国以外,还有日本与韩国。1995年,国家发布了新的国标码 GBK(汉字国标扩展编码)。它是对GB2312—80的扩展。该编码标准兼容GB2312—80,共收录20902个简、繁体汉字及各种符号。现在所说的国标码是指GBK码。
国标码规定,二个字节存储一个汉字,即每个汉字由2个字节代码组成。每个字节的最高位恒为“0”,其余7位用于组成各种不同的码值。
(2)区位码
为了方便查询和使用,7445个汉字及符号按国标码顺序排列在一张94行、94列的二维表中。每一行叫作一个区,每一列叫作一个位。通过行(区)、列(位)坐标就可以唯一确定每一个汉字和符号的位置。其中,1~9区是各种符号,10~15区是空区,16~55区为一级汉字,56~87区为二级汉字。这样区号和位号各用2位十进制数就组成汉字区位码。
(3)汉字机内码(内码)
机内码是计算机内部进行文字(字符、汉字)信息处理时使用的编码,简称内码。当文字信息输入到计算机后,都要转换为机内码,才能进行各种处理:存储、加工、传输、显示和打印等。对每一个文字,其机内码是唯一的。
计算机既要处理汉字,也要处理英文。为了实现中、英文兼容,通常利用字节的最高位来区分某个码值是代表汉字还是ASCII码字符。具体做法是,最高位为“1”视为汉字,为“0”则视为ASCII字符。所以,汉字机内码可在国标码的基础上,把两个字节的最高位一律由“0”改为“1”而构成。由此可见,对ASCII字符来说,机内码与国标码的码值是相同的,而同一汉字的国标码与机内码的码值并不相同。
(4)汉字输入码(外码)
汉字输入码是汉字信息由键盘输入计算机时使用的编码,简称外码。汉字输入法非常多,最广泛使用的是五笔字型输入法和拼音输入法。
输入英文时,想输入什么字符便按什么键,输入码与机内码总是一致的。汉字输入则不同,例如现在要用拼音输入法输入“王”字,在键盘上依次按 W、A、N、G 键,这里的“wang”便是“王”字的输入码。
需要指出,无论采用哪一种汉字输入法,当用户向计算机输入汉字时,存入计算机中的总是它的机内码,与所采用的输入法无关。
(5)汉字字形码
汉字字形码是指汉字字形存储在字库中的数字化代码,用于计算机显示和打印输出汉字的“形”,即字形码决定了汉字显示和打印的外形。字形码是汉字的点阵表示,被称为“字模”。同一文字符号可以有多种“字模”,也就是字体或字库。
通常汉字显示使用16×16点阵,汉字打印可选用24×24、32×32、48×48等点阵。点数越多,打印的字体越美观,但汉字占用的存储空间也越大。例如,计算存储一个24×24点阵的汉字需要多少个字节。在24×24的网格中描绘一个汉字,整个网格分为24行、24列,每个小格用1位二进制编码表示,每一行需要24个二进制位,占3个字节,24行共占24×3=72个字节。