任务二 信息基础知识
【情境】
怀玉是一名计算机初学者,在日常使用电脑过程中,他发现 QQ信息、E-nail信件,都能很快地在远方的朋友的电脑上显示,怀玉很好奇电脑如何读懂他的信息内容,又是怎样和另外一台电脑沟通的。
【相关知识】
1.6 信息的基本概念
1.6.1 信息
信息是指现实世界事物的存在方式或运动状态的反映。信息具有可感知、可存储、可加工、可传递和可再生等自然属性,信息也是社会上各行各业不可缺少的、具有社会属性的资源。信息所具有的基本属性可归结为以下几个方面:
(1)普遍性和客观性。
(2)实质性和传递性。
(3)可扩散性和可扩充性。
(4)中介性和共享性。
(5)差异性和转换性。
(6)时效性和增值性。
(7)可压缩性。
1.6.2 数据
数据是描述现实世界事物的符号记录,是指用物理符号记录下来的可以鉴别的信息。物理符号包括数字、文字、图形、图像、声音及其他特殊符号。数据的多种表现形式,都可以经过数字化后存入计算机。
1.6.3 信息与数据的关系
信息和数据这两个概念既有联系又有区别。数据是信息的符号表示,或称载体;信息是数据的内涵,是数据的语义解释。数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。数据可用不同的形式表示,但信息不会随数据不同的形式而改变。
例如,某一时间的股票行情上涨就是一个信息,它不会因为这个信息的描述形式是数据、图表或语言等形式而改变。信息与数据是密切关联的。因此,在某些不需要严格区分的场合,也可以把两者不加区别地使用,例如信息处理也可以说成数据处理。1.6.4 数据处理的基本过程
人们将原始信息表示成数据,称为源数据,然后对这些源数据进行处理,从这些原始的、无序的、难以理解的数据中抽取或推导出新的数据,这些新的数据称为结果数据。结果数据对某些特定的人来说是有价值的、有意义的,它表示新的信息,可以作为某种决策的依据或用于新的推导。这一过程通常称为数据处理或信息处理。
信息是有价值的,为了提高信息的价值就要对信息和数据进行科学的管理,以保证信息的及时性、准确性、完整性和可靠性,就需要运用科学的方法、先进的技术来管理信息和数据。随着计算机软硬件技术的发展,信息和数据管理的实用技术——数据库技术也由低级到高级、由简单到逐步完善地发展起来。
1.7 信息在计算机中的存储形式
人类用文字、图表、数字表达和记录着世界上各种各样的信息,便于人们处理和交流。现在可以把这些信息都输入到计算机中,由计算机来保存和处理。前面提到,当代冯·诺依曼计算机都使用二进制来表示数据,本节所要讨论的就是用二进制来表示这些数据。
1.7.1 计算机中的数据
经过收集、整理和组织起来的数据,能成为有用的信息。数据是指能够输入计算机并被计算机处理的数字、字母和符号的集合。平常所看到的景象和听到的事实,都可以用数据来描述。可以说,只要计算机能够接收的信息都可叫数据。
1.计算机中数据的单位
计算机数据的表示经常用到以下几个概念。在计算机内部,数据都是以二进制的形式存储和运算的。
(1)位。二进制数据中的一个位(bit)简写为b,音译为比特,是计算机存储数据的最小单位。一个二进制位只能表示0或1两种状态,要表示更多的信息,就要把多个位组合成一个整体,一般以8位二进制组成一个基本单位。
(2)字节。字节是计算机数据处理的最基本单位,并主要以字节为单位解释信息。字节(Byte)简写为B,规定一个字节为8位,即1B=8b。每个字节由8个二进制位组成。一般情况下,一个ASCII码占用一个字节,一个汉字国际码占用两个字节。
(3)字。一个字通常由一个或若干个字节组成。字(Word)是计算机进行数据处理时,一次存取、加工和传送的数据长度。由于字长是计算机一次所能处理信息的实际位数,所以,它决定了计算机数据处理的速度,是衡量计算机性能的一个重要指标,字长越长,性能越好。
(4)数据的换算关系。1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB。
计算机型号不同,其字长是不同的,常用的字长有8、16、32和64位。一般情况下,IBM PC/XT的字长为8位,80286微机字长为16位,80386/80486微机字长为32位,Pentium系列微机字长为64位。
例如,一台微机的内存为256MB,软盘容量为1.44MB,硬盘容量为80GB,则它实际的存储字节数分别为:
内存容量=256×1024×1024B=268435456B
软盘容量=1.44×1024×1024B=1509949.44B
硬盘容量=80×1024×1024×1024B=85899345920B
如何表示正负和大小,在计算机中采用什么计数制,是学习计算机的一个重要问题。数据是计算机处理的对象,在计算机内部,各种信息都必须通过数字化编码后才能进行存储和处理。
由于技术原因,计算机内部一律采用二进制,而人们在编程中经常使用十进制,有时为了方便还采用八进制和十六进制。理解不同计数制及其相互转换是非常重要的。
2.进位计数制
在计算机中,二进制并不符合人们的习惯,但是计算机内部却采用二进制表示信息,其主要原因有如下4点:
(1)电路简单。在计算机中,若采用十进制,则要求处理10种电路状态,相对于两种状态的电路来说,是很复杂的。而用二进制表示,则逻辑电路的通、断只有两个状态。例如,开关的接通与断开,电平的高与低等。这两种状态正好用二进制的0和1来表示。
(2)工作可靠。在计算机中,用两个状态代表两个数据,数字传输和处理方便、简单、不容易出错,因而电路更加可靠。
(3)简化运算。在计算机中,二进制运算法则很简单。例如,相加减的速度快,求积规则有3个,求和规则也只有3个。
(4)逻辑性强。二进制只有两个数码,正好代表逻辑代数中的“真”与“假”,而计算机工作原理是建立在逻辑运算基础上的,逻辑代数是逻辑运算的理论依据。用二进制计算具有很强的逻辑性。
1.7.2 计算机中常用的几种计数制
用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢“几”进位,这就是进位计数制的问题,也就是数制问题。数制,即进位计数制,是人们利用数字符号按进位原则进行数据大小计算的方法。通常是以十进制来进行计算的。另外,还有二进制、八进制和十六进制等。
在计算机的数制中,要掌握3个概念,即数码、基数和位权。下面简单地介绍这3个概念。
数码:一个数制中表示基本数值大小的不同数字符号。例如,八进制有8个数码:0、1、2、3、4、5、6、7。
基数:一个数值所使用数码的个数。例如,八进制的基数为8,二进制的基数为2。
位权:一个数值中某一位上的1所表示数值的大小。例如,八进制的123,1的位权是64,2的位权是8,3的位权是1。
1.十进制 (DecinalNotation)
十进制的特点如下:
(1)有10个数码:0、1、2、3、4、5、6、7、8、9。
(2)基数:10。
(3)逢十进一(加法运算),借一当十(减法运算)。
(4)按权展开式。对于任意一个n位整数和m位小数的十进制数D,均可按权展开为:
D=Dn-1 ·10n-1 +Dn-2 ·10n-2 +…+D1 ·101 +D0 ·100 +D-1 ·10-1 +…+D-m·10-m
例:将十进制数456.24写成按权展开式形式为:
456.24=4×102+5×101+6×100+2×10-1+4×10-2
2.二进制(Binary Notation)
二进制有如下特点:
(1)有两个数码:0、1。
(2)基数:2。
(3)逢二进一(加法运算),借一当二(减法运算)。
(4)按权展开式。对于任意一个n位整数和m位小数的二进制数D,均可按权展开为:
D=Bn-1·2n-1 +Bn-2·2n-2 +…+B1·21 +B0·20 +B-1·2-1 +…+B-m·2 -m
例:把(11001.101)2写成展开式,它表示的十进制数为:
1×24+1×23+0×22+0×21+1×20+1×2-1+0×2-2+1×2-3=(25.625)10
3.八进制(Octal Notation)
八进制的特点如下:
(1)有8个数码:0、1、2、3、4、5、6、7。
(2)基数:8。
(3)逢八进一(加法运算),借一当八(减法运算)。
(4)按权展开式。对于任意一个n位整数和m位小数的八进制数D,均可按权展开为:
D=On-1·8n-1 +…+O1·81 +O0·80 +O-1·8-1 +…+O-m·8 -m
例:(5346)8相当于十进制数为:
5×83+3×82+4×81+6×80=(2790)10
4.十六进制 (HexadecinalNotation)
十六进制有如下特点:
(1)有16个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
(2)基数:16。
(3)逢十六进一(加法运算),借一当十六(减法运算)。
(4)按权展开式。对于任意一n位整数和m位小数的十六进制数D,均可按权展开为:
D=Hn-1·16n-1 +…+H1·161 +H0·160 +H-1·16-1 +…+H-m·16 -m
在16个数码中,A、B、C、D、E和F这6个数码分别代表十进制的10、11、12、13、14和15,这是国际上通用的表示法。
例:十六进制数(4C4D)16代表的十进制数为:
4×163+C×162+4×161+D×160=(19533)10
二进制数与其他数之间的对应关系如表1-1所示。
表1-1 几种常用进制之间的对照关系
1.7.3 常用计数制之间的转换
不同数进制之间进行转换应遵循转换原则。转换原则是:两个有理数如果相等,则有理数的整数部分和分数部分一定分别相等。也就是说,若转换前两数相等,转换后仍必须相等,数制的转换要遵循一定的规律。
1.二、八、十六进制数转换为十进制数
(1)二进制数转换成十进制数。将二进制数转换成十进制数,只要将二进制数用计数制通用形式表示出来,计算出结果,便得到相应的十进制数。
例:(1101100.111)2=1×26+1×25+1×23+1×22+1×2-1+1×2-2+1×2-3
=64+32+8+4+0.5+0.25+0.125
=(108.875)10
(2)八进制数转换为十进制数。八进制数→十进制数,即以8为基数按权展开并相加。
例:把(652.34)8转换成十进制数。
解:(652.34)8=6×82+5×81+2×80+3×8-1+4×8-2
=384+40+2+0.375+0.0625
=(426.4375)10
(3)十六进制数转换为十进制数。十六进制数→十进制数,即以16为基数按权展开并相加。
例:将(19BC.8)16转换成十进制数。
解:(19BC.8)16=1×163+9×162+B×161+C×160+8×16-1
=4096+2304+176+12+0.5
=(6588.5)10
2.十进制数转换为二进制数
(1)整数部分的转换。整数部分的转换采用的是除2取余法。其转换原则是:将该十进制数除以2,得到一个商和余数(K0),再将商除以2,又得到一个新商和余数(K1),如此反复,得到的商是0时得到余数(Kn-1),然后将所得到的各位余数,以最后余数为最高位,最初余数为最低位依次排列,即Kn-1Kn-2…K1K0,这就是该十进制数对应的二进制数。这种方法又称为“倒序法”。
例:将(126)10转换成二进制数。
结果为:(126)10=(1111110)2
(2)小数部分的转换。小数部分的转换采用乘2取整法。其转换原则是:将十进制数的小数乘以2,取乘积中的整数部分作为相应二进制数小数点后最高位K-1,反复乘2,逐次得到K-2,K-3,…,K-m,直到乘积的小数部分为0或1的位数达到精确度要求为止。然后把每次乘积的整数部分由上而下依次排列起来(K-1K-2…K-m),即是所求的二进制数。这种方法又称为“顺序法”。
例:将十进制数(0.534)10转换成相应的二进制数。
结果为:(0.534)10=(0.10001)2
例:将(50.25)10转换成二进制数。
分析:对于这种既有整数又有小数部分的十进制数,可将其整数和小数分别转换成二进制数,然后再把两者连接起来即可。
因为(50)10=(110010)2,(0.25)10=(0.01)2
所以(50.25)10=(110010.01)2
3.八进制数与二进制数之间的转换
(1)八进制数转换为二进制数。八进制数转换成二进制数所使用的转换原则是“一位拆三位”,即把一位八进制数对应于三位二进制数,然后按顺序连接即可。
例:将(64.54)8转换为二进制数。
结果为:(64.54)8=(110100.101100)2
(2)二进制数转换成八进制数。二进制数转换成八进制数可概括为“三位并一位”,即从小数点开始向左右两边以每三位为一组,不足三位时补0,然后每组改成等值的一位八进制数即可。
例:将(110111.11011)2转换成八进制数。
结果为:(110111.11011)2=(67.66)8
4.二进制数与十六进制数的相互转换
(1)二进制数转换成十六进制数。二进制数转换成十六进制数的转换原则是“四位并一位”,即以小数点为界,整数部分从右向左每4位为一组,若最后一组不足4位,则在最高位前面添0补足4位,然后从左边第一组起,将每组中的二进制数按权数相加得到对应的十六进制数,并依次写出即可;小数部分从左向右每4位为一组,最后一组不足4位时,尾部用0补足4位,然后按顺序写出每组二进制数对应的十六进制数。
例:将(1111101100.0001101)2转换成十六进制数。
结果为:(1111101100.0001101)2=(3EC.1A)16
(2)十六进制数转换成二进制数。十六进制数转换成二进制数的转换原则是“一位拆四位”,即把1位十六进制数写成对应的4位二进制数,然后按顺序连接即可。
例:将(C41.BA7)16转换为二进制数。
结果为:(C41.BA7)16=(110001000001.101110100111)2
在程序设计中,为了区分不同进制,常在数字后加一英文字母作为后缀以示区别。
①十进制数,在数字后面加字母D或不加字母也可以,如6659D或6659。
②二进制数,在数字后面加字母B,如1101101B。
③八进制数,在数字后面加字母O,如1275O。
④十六进制数,在数字后面加字母H,如CFE7BH。
1.7.4 二进制数的运算
二进制数的运算包括算术运算和逻辑运算。
1.二进制数的算术运算
二进制数的算术运算包括加法、减法、乘法和除法运算。
(1)二进制数的加法运算。二进制数的加法运算法则是:0+0=0,0+1=1+0=1,1+1=10(向高位进位)。
例:求(101101.10001)2+(1011.11001)2的值。
解:
结果为:(101101.10001)2+(1011.11001)2=(111001.01011)2
总结:从以上加法的过程可知,当两个二进制数相加时,每一位是3个数相加,对本位则是把被加数、加数和来自低位的进位相加(进位可能是0,也可能是1)。
(2)二进制数的减法运算。二进制数的减法运算法则是:0-0=1-1=0,1-0=1,0-1=1(借1当2)。
例:求(110000.11)2-(001011.01)2的值。
解:
结果为:(110000.11)2-(001011.01)2=(100101.10)2
总结:从以上运算过程可知,当两数相减时,有的位会发生不够减的情况,要向相邻的高位借1当2。所以,在做减法时,除了每位相减外,还要考虑借位情况,实际上每位有3个数参加运算。
(3)二进制数的乘法运算。二进制数的乘法运算法则是:0×0=0,0×1=1×0=0,1×1=1。
例:求(1010)2×(1011)2的值。
解:
结果为:(1010)2×(1011)2=(1101110)2
总结:由以上运算过程可知,当两数相乘时,每个部分积都取决于乘数。乘数的相应位为1时,该次的部分积等于被乘数;为0时,部分积为0。每次的部分积依次左移一位,将各部分积累起来,就得到了最终结果。
(4)二进制数的除法运算。二进制数的除法运算规则是:0÷0=0,0÷1=0(1÷0无意义),1÷1=1。
例:求(111101)2÷(1100)2的值。
解:
结果为:商为101,余数为1。
总结:在计算机内部,二进制的加法是基本运算,利用加法可以实现二进制数的减法、乘法和除法运算。在计算机的运算过程中,应用了“补码”进行运算。
2.二进制数的逻辑运算
在计算机中,除了能表示正负、大小的“数量数”以及相应的加、减、乘、除等基本算术运算外,还能表示事物逻辑判断,即“真”、“假”、“是”、“非”等“逻辑数”的运算。能表示这种数的变量称为逻辑变量。在逻辑运算中,都是用“1”或“0”来表示“真”或“假”,由此可见,逻辑运算是以二进制数为基础的。
计算机的逻辑运算区别于算术运算的主要特点是:逻辑运算是按位进行的,位与位之间不像加减运算那么有进位或借位的关系。
逻辑运算主要包括的运算有:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑“非”运算。此外,还有“异或”运算。
(1)逻辑与运算(乘法运算)。逻辑与运算常用符号“×”、“∧”或“&”来表示。如果A、B、C为逻辑变量,则A和B的逻辑与可表示成A×B=C、A∧B=C或A&B=C,读作“A与B等于C”。一位二进制数的逻辑与运算规则如表1-2所示。
表1-2 与运算规则
由表1-2可知,逻辑与运算表示只有当参与运算的逻辑变量都取值为1时,其逻辑乘积才等于1,即一假必假,两真才真。
这种逻辑与运算在实际生活中有许多应用,例如,计算机的电源要想接通,必须把实验室的电源总闸、USP电源开关以及计算机机箱的电源开关都接通才行。这些开关是串在一起的,它们按照“与”逻辑接通。为了书写方便,逻辑与运算的符号可以略去不写(在不致混淆的情况下),即A×B=A∧B=AB。
例:设A=1110011,B=1010101,求A∧B。
解:
结果为:A∧B=1010001。
(2)逻辑或运算(加法运算)。逻辑或运算通常用符号“+”或“∨”来表示。如果A、B、C为逻辑变量,则A和B的逻辑或可表示成A+B=C或A∨B=C,读作“A或B等于C”。其运算规则如表1-3所示。
表1-3 或运算规则
由表1-3可知,逻辑或运算是:在给定的逻辑变量中,A或B只要有一个为1,其逻辑或的值为1;只有当两者都为0,逻辑或才为0,即一真必真,两假才假。
这种逻辑或运算在实际生活中有许多应用,例如,房间里有一盏灯,装了两个开关,这两个开关是并联的。显然,任何一个开关接通或两个开关同时接通,电灯都会亮。
例:设A=11001110,B=10011011,求A∨B。
解:
结果为:A∨B=11011111。
(3)逻辑非运算(逻辑否定、逻辑求反)。设A为逻辑变量,则A的逻辑非运算记作A。逻辑非运算的规则为:如果不是0,则唯一的可能性就是1;反之亦然。逻辑非运算的真值表如表1-4所示。
表1-4 非运算规则
例如,室内的电灯,不是亮,就是灭,只有两种可能性。
例:设A=111011001,B=110111101,求。
解:=000100110,=001000010。
(4) 逻辑异或运算 (半加运算)。逻辑异或运算符为 “⊕”。如果A、B、C为逻辑变量,则A和B的逻辑异或可表示成A⊕B=C,读作 “A异或B等于C”。逻辑异或的运算规则如表1-5所示。
表1-5 逻辑异或的运算规则
由表1-5可知,在给定的两个逻辑变量中,只有两个逻辑变量取值相同,异或运算的结果就为0;只有相异时,结果才为1,即一样时为0,不一样才为1。
例:设A=11010011,B=10110111,求A⊕B。
解:
结果为:A⊕B=01100100。
当两个变量之间进行逻辑运算时,只在对应位之间按上述规律进行逻辑运算,不同位之间没有任何关系,当然,也就不存在算术运算中的进位或借位问题。
1.8 计算机中数据的表示
1.8.1 数值数据的表示
1.机器数和真值
在计算机中,使用的二进制只有0和1两种值。一个数在计算机中的表示形式,称为机器数。机器数所对应的原来的数值称为真值,由于采用二进制必须把符号数字化,通常是用机器数的最高位作为符号位,仅用来表示数符。若该位为0,则表示正数;若该位为1,则表示负数。机器数也有不同的表示法,常用的有3种:原码、补码和反码。
机器数的表示法:用机器数的最高位代表符号(若为0,则代表正数;若为1,则代表负数),其数值位为真值的绝对值。假设用8位二进制数表示一个数,如图1-2所示。
图1-2 用8位二进制数表示一位数
在数的表示中,机器数与真值的区别是:真值带符号如-0011100,机器数不带数符,最高位为符号位,如10011100,其中最高位1代表符号位。
例如:真值数为-0111001,其对应的机器数为10111001,其中最高位为1,表示该数为负数。
2.原码、反码、补码的表示
在计算机中,符号位和数值位都是用0和1表示,在对机器数进行处理时,必须考虑到符号位的处理,这种考虑的方法就是对符号和数值的编码方法。常见的编码方法有原码、反码和补码3种方法。下面分别讨论这3种方法的使用。
(1)原码的表示。一个数X的原码表示方式为:符号位用0表示正,用1表示负;数值部分为X的绝对值的二进制形式。记X的原码表示为[X]原。
例如:当X=+1100001时,则[X]原=01100001。
当X=-1110101时,则[X]原=11110101。
在原码中,0有两种表示方式:
当X=+0000000时,[X]原=00000000。
当X=-0000000时,[X]原=10000000。
(2)反码的表示。一个数X的反码表示方法为:若X为正数,则其反码和原码相同;若X为负数,在原码的基础上,符号位保持不变,数值位各位取反。记X的反码表示为[X]反。
例如:当X=+1100001时,则[X]原=01100001,[X]反=01100001。
当X=-1100001时,则[X]原=11100001,[X]反=10011110。
在反码表示中,0也有两种表示形式:
当X=+0时,则[X]反=00000000。
当X=-0时,则[X]反=10000000。
(3)补码的表示。一个数X的补码表示方式为:当X为正数时,则X的补码与X的原码相同;当X为负数时,则X的补码,其符号位与原码相同,其数值位取反加1。记X的补码表示为[X]补。
例如:当X=+1110001,[X]原=01110001,[X]补=01110001。
当X=-1110001,[X]原=11110001,[X]补=10001111。
3.BCD码
在计算机中,用户和计算机的输入和输出之间要进行十进制和二进制的转换,这项工作由计算机完成。在计算机中采用了输入/输出转换的二至十进制编码,即BCD码。
在二进制与十进制的转换中,采用4位二进制表示1位十进制的编码方法。最常用的是8421BCD码。“8421”的含义是指用4位二进制数从左到右每位对应的权是8、4、2、1。BCD码和十进制之间的对应关系如表1-6所示。
表1-6 BCD码和十进制数的对照表
例如:十进制数765用BCD码表示的二进制数为:0111 0110 0101。
1.8.2 非数值数据的表示
计算机中使用的数据有数值型数据和非数值型数据两大类。数值数据用于表示数量意义;非数值数据又称为符号数据,包括字母和符号等。计算机除处理数值信息外,还要处理大量的字符信息。例如,将用高级语言编写的程序输入到计算机时,人与计算机通信时所用的语言就不再是一种纯数字语言而是字符语言。由于计算机中只能存储二进制数,这就需要对字符进行编码,建立字符数据与二进制串之间的对应关系,以便于计算机识别、存储和处理。这里介绍两种符号数据的表示。
1.字符数据的表示
计算机中用得最多的符号数据是字符,它是用户和计算机之间的桥梁。用户使用计算机的输入设备,输入键盘上的字符键向计算机内输入命令和数据,计算机把处理后的结果也以字符的形式输出到屏幕或打印机等输出设备上。对于字符的编码方案有很多种,但使用最广泛的是ASCII码(American Standard Code for Information Interchange)。ASCII码最开始是美国国家信息交换标准字符码,后来被采纳为一种国际通用的信息交换标准代码。
ASCII码由0~9这10个数符,52个大、小写英文字母,32个符号及34个计算机通用控制符组成,共有128个元素。因为ASCII码总共为128个元素,故用二进制编码表示需用7位。任意一个元素由7位二进制数表示,从0000000到1111111共有128种编码,可用来表示128个不同的字符。ASCII码表的查表方式是:先查列(高三位),后查行(低四位),然后按从左到右的书写顺序完成,如B的ASCII码为1000010。在ASCII码进行存放时,由于它的编码是7位,因1个字节(8位)是计算机中的常用单位,故仍以1字节来存放1个ASCII字符,每个字节中多余的最高位取0。如表1-7所示为7位ASCII字符编码表。
表1-7 ASCII字符编码表
(续上表)
由表1-7可知,ASCII码字符可分为两大类:
(1)打印字符:从键盘输入并显示的95个字符,如大小写英文字母各26个,数字0~9这10个数字字符的高3位编码(d6d5d4)为011,低4位为0000~1001。当去掉高3位时,低4位正好是二进制形式的0~9。
(2)不可打印字符:共33个,其编码值为0~31(0000000~0011111)和(1111111),不对应任何可印刷字符。不可打印字符通常为控制符,用于计算机通信中的通信控制或对设备的功能控制。如编码值为127(1111111),是DEL码,它用于删除光标之后的字符。
ASCII码字符的码值可用7位二进制代码或2位十六进制来表示。例如字母D的ASCII码值为(1000100)2或84H,数字4的码值为(0110100)2或34H等。
2.汉字的存储与编码
英语文字是拼音文字,所有文字均由26个字母拼组而成,所以使用一个字节表示一个字符足够了。但汉字是象形文字,汉字的计算机处理技术比英文字符复杂得多,一般用两个字节表示一个汉字。由于汉字有一万多个,常用的也有六千多个,所以编码采用两字节的低7位共14个二进制位来表示。一般汉字的编码方案要解决4种编码问题。
(1)汉字交换码。汉字交换码主要是用作汉字信息交换的。以国家标准局1980年颁布的《信息交换用汉字编码字符集基本集》(代号为GB2312—80)规定的汉字交换码作为国家标准汉字编码,简称国标码。
国标GB2312—80规定,所有的国际汉字和符号组成一个94×94的矩阵。在该矩阵中,每一行称为一个“区”,每一列称为一个“位”,这样就形成了94个区号(01~94)和94个位号(01~94)的汉字字符集。国标码中有6763个汉字和628个其他基本图形字符,共计7445个字符。其中规定一级汉字3755个,二级汉字3008个,图形符号682个。一个汉字所在的区号与位号简单地组合在一起就构成了该汉字的“区位码”。在汉字区位码中,高两位为区号,低两位为位号。因此,区位码与汉字或图形符号之间是一一对应的。一个汉字由两个字节代码表示。
(2)汉字机内码。汉字机内码又称内码或汉字存储码。该编码的作用是统一了各种不同的汉字输入码在计算机内的表示。汉字机内码是计算机内部存储、处理的代码。计算机既要处理汉字,又要处理英文,所以必须能区别汉字字符和英文字符。英文字符的机内码是最高位为0的8位ASCII码。为了区分,把国标码每个字节的最高位由0改为1,其余位不变的编码作为汉字字符的机内码。
一个汉字用两个字节的内码表示,计算机显示一个汉字的过程首先是根据其内码找到该汉字字库中的地址,然后将该汉字的点阵字型在屏幕上输出。
汉字的输入码是多种多样的,同一个汉字如果采用的编码方案不同,则输入码就有可能不一样,但汉字的机内码是一样的。有专用的计算机内部存储汉字使用的汉字内码,用以将输入时使用的多种汉字输入码统一转换成汉字机内码进行存储,以方便机内的汉字处理。在汉字输入时,根据输入码通过计算机或查找输入码表完成输入码到机内码的转换。如汉字国际码(H)+8080(H)=汉字机内码(H)。
(3)汉字输入码。汉字输入码也叫外码,是为了通过键盘字符把汉字输入计算机而设计的一种编码。
英文输入时,想输入什么字符便按什么键,输入码和内码是一致的。而汉字输入则不同,可能要按几个键才能输入一个汉字。汉字和键盘字符组合的对应方式称为汉字输入编码方案。汉字外码是针对不同汉字输入法而言的,通过键盘按某种输入法进行汉字输入时,人与计算机进行信息交换所用的编码称为“汉字外码”。对于同一汉字而言,输入法不同,其外码也是不同的。例如,对于汉字“啊”,在区位码输入法中的外码是1601,在拼音输入法中的外码是a,而在五笔字型输入法中的外码是KBSK。汉字的输入码种类繁多,大致有4种类型,即音码、形码、数字码和音形码。
(4)汉字字形码。汉字在显示和打印输出时,是以汉字字形信息表示的,即以点阵的方式形成汉字图形。汉字字形码是指确定一个汉字字形点阵的代码(汉字字形码)。一般采用点阵字形表示字符。
目前普遍使用的汉字字型码是用点阵方式表示的,称为“点阵字模码”。所谓“点阵字模码”,就是将汉字像图像一样置于网状方格上,每格是存储器中的一个位,16×16点阵是在纵向16点、横向16点的网状方格上写一个汉字,有笔画的格对应1,无笔画的格对应0。这种用点阵形式存储的汉字字型信息的集合称为汉字字模库,简称汉字字库。
通常汉字显示使用16×16点阵,而汉字打印可选用24×24点阵、32×32点阵、64×64点阵等。汉字字形点阵中的每个点对应一个二进制位,1字节又等于8个二进制位,所以16×16点阵字形的字要使用32个字节(16×16÷8字节=32字节)存储,64×64点阵的字形要使用512个字节。
在16×16点阵字库中的每一个汉字以32个字节存放,存储一、二级汉字及符号共8836个,需要282.5KB磁盘空间。而用户的文档假定有10万个汉字,却只需要200KB的磁盘空间,这是因为用户文档中存储的只是每个汉字(符号)在汉字库中的地址(内码)。
【习题】
将十进制数296转换成二进制数。