1.2 信息的表示与存储
计算机最基本的功能是对信息进行采集、存储、处理和传输。信息的载体是数据,数据包括数值、字符、图形、图像、声音、视频等多种形式。计算机内部采用二进制方式表示数据,因此各类数据均需要转换为二进制的编码形式以便计算机进行运算处理与存储。
1.计算机中的数据及其单位
在计算机中,各种信息都是以数据的形式出现的,对数据进行处理后产生的结果为信息,因此数据是计算机中信息的载体。计算机中的信息均用二进制数来表示。
在计算机内存储和运算数据时,常用的数据单位为:比特(Bit)、字节(Byte)、字长。
比特(位):是度量数据的最小单位。在数字电路和计算机技术中采用二进制表示数据,代码只有“0”和“1”。
字节:是信息组织和存储的基本单位,也是计算机体系结构的基本单位。一个字节由8个比特(位)二进制数字组成。通常用B(字节)、KB(千字节)、MB(兆字节)或GB(吉字节)为单位来表示存储器的存储容量或文件的大小,即1 KB=1 024 B,1 MB=1 024 KB,1 GB=1 024 MB,1 TB=1 024 GB。
字长:将计算机一次能够并行处理的二进制位称为该机器的字长,也称为计算机的一个“字”。字长是计算机的一个重要指标,字长越长,计算机的数据处理速度越快。计算机的字长通常是字节的整倍数,如8位、16位、32位。技术发展到今天,微型机的字长为64位,大型机的字长已达128位。
2.常用数制及其转换
数制也称计数制,是指用一组特定的数字符号按照先后顺序排列起来,从低位向高位进位计数表示数的方法,称作进制。数制中有数位、基数(Base)和位权(Weight)3个要素。
数位:指数码在某个数中所处的位置。
基数:指在某种数制中,每个数位上所能使用的数码的个数。
位权:指数码在不同的数位上所表示的数值的大小。位权以指数形式表达,以基数为底,其指数是数位的序号。
(1)R进制数转换为十进制
在R进制数(如十进制数、二进制数、八进制数和十六进制数等)中,遵循“逢R进一”的进位规则,进行“按位权展开”并求和的方法,可得到等值的十进制数。
十进制(Decimal):任意一个十进制数值都可用0、1、2、3、4、5、6、7、8、9共10个数码组成的字符串来表示。它的基数R=10,其进位规则是“逢十进一”,它的位权可表示成10i。其按权展开式为:
例如:(123.45)D=1×102+2×101+3×100+4×10-1+5×10-2
二进制(Binary):任意一个二进制数可用0、1两个数码组成的字符串来表示。它的基数R=2,其进位规则是“逢二进一”,它的位权可表示成2i。其按权展开式为:
例如:(1101.11)B=1×23+1×22+0×21+1×20+1×2-1+1×2-2
=8+4+0+1+0.5+0.25
=13.75
转换结果为:(1101.11)B=(13.75)D
八进制(Octal):和十进制与二进制的讨论类似,任意一个八进制数可用0、1、2、3、4、5、6、7共8个数码组成的字符串来表示。它的基数R=8,其进位规则是“逢八进一”,它的位权可表示成8i。其按权展开式为:
例如:(345.08)O=3×82+4×81+5×80+0×8-1+8×8-2
=192+32+5+0+0.125
=229.125
转换结果为:(345.08)O=(229.125)D
十六进制(Hexadecimal):和十进制与二进制的讨论类似,任意一个十六进制数可用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个数码组成的字符串来表示,其中符号A、B、C、D、E、F分别代表十进制数值10、11、12、13、14、15。它的基数R=16,其进位规则是“逢十六进一”,它的位权可表示成16i。其按权展开式为:
例如:(2AB.8)H=2×162+10×161+11×160+8×16-1
=512+160+11+0.5
=683.5
转换结果为:(2AB.8)H=(683.5)D
(2)十进制数转换为R进制数
整数的转换采用“除R取余,逆序排列”法,将待转换的十进制数连续除以R,直到商为0,每次得到的余数按相反的次序(即第一次除以R所得到的余数排在最低位,最后一次除以R所得到的余数排在最高位)排列起来就是相应的R进制数。
小数的转换采用“乘R取整,顺序排列”法,将被转换的十进制纯小数反复乘以R,每次相乘乘积的整数部分若为1,则R进制数的相应位为1;若整数部分为0,则相应位为0。由高位向低位逐次进行,直到剩下的纯小数部分为0或达到所要求的精度为止。
例如(以十进制数转换为二进制数为例),将十进制数(124.8125)D转换成二进制数。转换结果为:(124.8125)D=(1111100.1101)B
(3)二进制数与八进制数、十六进制数的相互转换
二进制数转换为八进制数时,以小数点为界向左右两边分组,每3位为一组,两头不足3位补0即可。同样,二进制数转换为十六进制数时,按每4位为一组进行分组转换即可。
例如:
同样,八进制数或十六进制数转换为二进制数,只要将1位(八进制数或十六进制数)转换为3或4位(二进制数)表示即可。
例如:
3.计算机西文字符编码
计算机中的信息都是用二进制编码表示的。用以表示字符的二进制编码称为字符编码。计算机中常用的字符编码有EBCDIC码和ASCII码。IBM系列大型机采用EBCDIC码,微型机采用ASCII码。
美国标准信息交换码(ASCII)被国际化组织指定为国际标准。它有7位码和8位码两种版。国际的7位ASCII码是用7位二进制数表示一个字符的编码,其编码范围从0000000B~1111111B,共有27=128个不同的编码值,相应可以表示128个不同的字符编码,其中包括10个数字、26个小写字母、26个大写字母、各种标点符号及专用符号、功能符等。数字“0”的ASCII码值是0110000B,即30H(其他数字的ASCII码值就是在数字“0”的ASCII码值的基础上加相应数字值);字母“A”的ASCII码值是1000001B,即41H;字母“a”的ASCII码值是1100001B,即61H(其他字母的ASCII码值就是在字母“A”或“a”的ASCII码值的基础上加相应的序号值)。
4.计算机中文字符编码
(1)国标码
我国于1980年制定了国家标准《信息交换用汉字编码字符集》(GB2312-80)。汉字信息交换码简称交换码,也叫国标码,有7445个字符编码,其中有682个非汉字图形符和6763个汉字的代码。有一级常用字3755个,二级常用字3008个,一级汉字按字母顺序排列,二级汉字按部首顺序排列。一个汉字对应一个区位码,由四位数字组成,前两位数字为区码(0~94),后两位数字为位码(0~94)。非汉字图形符号位于第1~11区;一级汉字3 755个,位于第16~55区;二级汉字3 008个,位于第56~87区。1KB的存储空间能存储512个汉字国标(GB2312-80)码。两个字节存储一个国标码。
(2)汉字输入码
输入码是利用计算机标准键盘按键的不同排列组合来对汉字的输入进行编码的,也叫外码。目前,汉字输入编码方法的开发研究种类繁多,基本上可分为音码、形码、语音、手写输入或扫描输入等。若输入法不同,则输入码也不同,但最终存入计算机中的总是汉字的机内码,与所采用的输入法无关。这是因为在输入码与国标码之间存在着对应关系,不同输入码通过输入字典转换统一为标准的国标码。
(3)汉字机内码
机内码是计算机内部进行文字(字符、汉字)信息处理时使用的编码,简称内码。汉字信息在输入到计算机中后,都要转换为机内码,才能进行各种存储、加工、传输、显示和打印等处理。汉字的机内码是将国标码的两个字节的最高位分别置为1得到的。机内码和国标码之间的差值总是8080H。
(4)汉字地址码
汉字地址码是指汉字库中存储汉字字型信息的逻辑地址码。它与汉字内码有着简单的对应关系,以简化内码到地址码的转换。
(5)汉字字型码
汉字字型码也叫字模或汉字输出码,用于计算机显示和打印输出汉字的外形,也就是字体或字库。字形码通常有点阵表示方式和矢量表示方式。用点阵表示汉字的字形时,汉字字形显示通常使用16×16点阵,汉字打印可选用24×24、32×32、48×48等点阵。点数越多,打印的字体越美观,但汉字占用的存储空间也越大,而不同的字体又对应不同的字库。
例如,如果用16×16点阵表示一个汉字,则一个汉字占16行,每行有16个点,在存储时用两个字节存放一行上16个点的信息。对应位为“0”,表示该点为“白”;对应位为“1”,表示该点为“黑”。因此,一个16×16点阵的汉字占32个字节。要存放10个24×24点阵的汉字字模,需要10*24*24/8=720B。
(6)各种汉字代码之间的关系
汉字的输入、处理和输出的过程实际上是汉字的各种代码之间的转换过程。图1-1所示的为汉字代码在汉字信息处理系统中的位置及它们之间的关系。
图1-1 汉字信息处理流程
国标码的编码范围为2121H~7E7EH。区位码和国标码之间的转换方法是,将一个汉字的十进制区号和十进制位号分别转换成十六进制数,然后再分别加上20H,就成为此汉字的国标码:
汉字国标码=汉字区位码+2020H
而得到汉字的国标码之后,就可以使用以下公式计算汉字的机内码:
汉字机内码=汉字国标码+8080H