数据恢复技术深度揭秘
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 数据的表示方法

1.1.1 计算机中数据的含义

数据(Data)是表示客观事物的、可以被记录的、能够被识别的各种符号,包括字符、符号、表格、声音和图形、图像等。简言之,一切可以被计算机加工、处理的对象都可以被称为数据。数据可在物理介质上记录或传输,并通过外围设备被计算机接收,经过处理而得到结果。

1.进位计数制

在日常生活中,人们习惯于用十进制计数。但是,在实际应用中,还使用其他的计数制,如二进制、十二进制、二十四进制、六十进制等。用数字符号排列,由低位向高位进位计数的方法叫做进位计数制,简称进位制。进位计数制的特点是由一组规定的数字来表示任意的数。例如,一个二进制数只能用0和1来表示,一个十进制数只能用0、1、2、…、9来表示,一个十六进制数用0、1、2、…、9和A~F十六个数字符号来表示。

数据无论使用哪种进位制,都涉及两个基本要素:“基数”与各数位的“位权”。

一种计数制允许选用基本数字符号(数码)的个数叫基数。在基数为J的计数制中,包含J个不同的数字符号,每个数位计满J就向高位进1,即“逢J进一”。例如最常用的十进制中,每一位上允许选用0、1、2、…、9共10个不同数码中的一个,则十进制的基数为10,每位计满10时向高位进一。

一个数字符号处在不同位时,它所代表的数值是不同的。每个数字符号所表示的数值等于该数字符号值乘以一个与数码所在位有关的常数,这个常数叫做“位权”,简称“权”。位权的大小是以基数为底,数码所在位置的序号为指数的整数次幂。例如,十进制数的百分位、十分位、个位、百位、千位的权依次是10-2、10-1、100、101、102、103。整数部分的个位位置的序号是0。

J进制数每位的值等于该位的权与该位数码的乘积。一个J进制可以写成按权展开的多项式和的形式,一个J进制数(S)J按权展开的多项式和的一般表达式为:

式中,nJ进制数整数部分的位数;mJ进制数小数部分的位数;ki是第i位上的数码,也称系数;Ji是第i位上的权。在整数部分,i是正数;在小数部分,i应是负数。

可以看出,J进制数相邻两个数的权相差J倍,如果小数点向左移一位,数缩小J倍;反之,小数点右移一位,数扩大J倍。

2.二进制

计算机是由电子元器件组成的。考虑到经济、可靠、容易实现、运算简便、节省元器件等因素,在计算机中的数都用二进制表示而不用十进制表示。

二进制有如下优点:

(1)技术容易实现

二进制计数只需要两个数字符号0和1。在电路中可以用两种不同的状态——低电平(0)和高电平(1)来表示,其运算电路的实现比较简单,并且数据的存储和传送也可用简单而可靠的方式进行;而要制造有10种稳定状态的电子器件分别代表十进制中的10个数字符号是十分困难的。

(2)二进制运算规则简单

十进制两个一位数的“和”与“积”的结果各有55种,而二进制两个一位数的“和”与“积”分别只有3种结果。所以二进制数在编码、计数和算术运算方面规则简单,容易用开关电路实现,为提高计算机的运算速度和降低实现成本奠定了基础。

(3)逻辑运算方便

由于二进制数码的两个基本符号“0”和“1”,能方便地与逻辑命题的“否”和“是”,或称“假”和“真”相对应,为计算机中的逻辑运算和程序中的逻辑判断提供了便利条件。

二进制的基数为2,只有“0”和“1”两个数码,计数逢二进一。第i位上的位权是2的i次幂。一个二进制数展开成多项式和的表达式是:

例如:(10101.11)2=1×24+0×23+1×22+0×21+1×20+1×2-1+1×2-2

3.八进制数与十六进制数

在计算机内部,一切信息的存储、处理与传送均采用二进制的形式。但由于二进制数写起来很长,且很难记,为方便起见,人们编写程序或书写指令时,通常采用八进制数或十六进制数。

八进制数基数为8,有0、1、2、3、4、5、6、7,共8个数码,逢八进一,第i位上的位权是8的i次幂。一个八进制数展开成多项式和的表达式是:

十六进制数基数为16,有0、1、2、3、4、5、6、7、8、9及大写英文字母A、B、C、D、E、F(数码A~F对应十进制数分别是10~15)共16个数码,逢十六进一,第i位上的位权是16的i次幂。一个十六进制数展开成多项式和的表达式是:

十六进制和八进制与二进制之间有着非常简单的对应关系,表1-1给出了四种常用计数制的对照表。

表1-1 四种常用计数制的对照表

4.进位计数制的相互转换

为了清晰方便起见,常在数字后面加字母B(Binary)表示二进制数;加O(Octal)表示八进制数,为避免把字母O误认为数字0,本书暂时改用Q字母;加H (Hexadecimal)表示十六进制数,加D(Decimal)或不加字母表示十进制数。

(1)二进制转换成十进制

将二进制转换成十进制,只需把二进制数写成按权展开多项式和的形式,再计算此表达式的和即可。

例如,10101.11B=1×24+0×23+1×22+0×21+1×20+1×2-1+1×2-2

=24+22+20+2-1+2-2=21.75D

(2)十进制整数转换成二进制整数

将十进制整数转换成二进制整数采用“除2取余法”。即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数;以此类推,直到商等于零为止。

每次得到的余数的倒排列,就是对应二进制数的各位数。

例如,将十进制数153转换成二进制数:

即153D=(k7k6k5k4k3k2k1)=10011001B。

(3)十进制小数转换成二进制小数

十进制小数转换成二进制小数是用“乘2取整法”。即用2逐次去乘十进制小数,将每次得到的积的整数部分按各自出现的先后顺序依次排列,就得到相对应的二进制小数。

例如,把十进制小数0.7875转换成二进制数:

即0.7875D=(k-1k-2k-3k-4k-5)=0.11001B。

如果一个十进制数既有整数部分又有小数部分,可将整数部分和小数部分分别进行J进制的等值转换,然后合并就可得到结果。

(4)八进制转换为二进制

将八进制数转换成二进制数,每位八进制数用3位二进制数表示即可。

例如,八进制数617.34Q转换成二进制数:

6 1 7 . 3 4

110 001 111 .011 100

即617.34Q=110001111.011100B。

(5)二进制转换为八进制

二进制数转换成八进制数,是将二进制数的整数部分从右向左每3位一组,每一组为一位八进制整数。

二进制小数转换成八进制小数是将小数部分从左至右每3位一组,每一组是一位八进制的小数。若整数和小数部分的最后一组不足3位时,则用0补足3位。

例如,把二进制数11010110110.1001转换成八进制数:

即11010110110.1001B=3266.44Q。

(6)十六进制转换为二进制

由于24=16,所以每一位十六进制数要用4位二进制数来表示,也就是将每一位十六进制数表示成4位二进制数。

例如,将十六进制数3A65.B2H转换成二进制数:

即3A65.B2H=11101001100101.1011001B。

(7)二进制转换为十六进制

将二进制数转换成十六进制数是将二进制数的整数部分从右向左每4位一组,每一组为一位十六进制整数;而二进制小数转换成十六进制小数是将二进制小数部分从左向右每4位一组,每一组为一位十六进制小数。最后一组不足4位时,应在后面用0补足4位。

例如,二进制数1010101011.0110B转换成十六进制数:

0010 1010 1011 .0110

2 A B . 6

即 (1010101011.0110)2=(2AB.6)16,或写为1010101011.0110B=2AB.6H。

1.1.2 数值数据在计算机中的表示方法

计算机只能识别二进制数,而要求计算机处理的数,如无符号数、有符号数等,又种类繁多,怎么办呢?计算机中采用各种形式的编码很好地解决了数及字符等信息的表示问题。

数据可分为两大类:数值数据和非数值数据。前者表示数量的多少;后者表示字符、汉字、图形、图像、声音等,又称符号数据。在计算机内,无论哪一种数据,都以二进制形式表示。本节首先讲解数值数据在计算机中的表示方法。

1.数据的单位

计算机中数据的常用单位有位、字节和字。

(1)位(Bit)

计算机中最小的数据单位是二进制的一个数位,简称为位(英文名称为Bit,读音为比特)。计算机中最直接、最基本的操作就是对二进制位的操作。

(2)字节(Byte)

字节这个词是在1956年左右由IBM公司最早提出来的。这个词起源于Bite,但用y代替了i,以避免被人误认为它是Bit,也就成了现在的Byte。曾经有一段时期,字节仅仅简单地表示特定数据路径上数据的位数。但是到了20世纪60年代中期,随着IBM的360系统的发展,字节这个词专门用来表示8位二进制数。

作为一个8位二进制数,一个字节可以从00000000取值到11111111。这些数可以代表0~255的正数,也可以表示 -128~127范围之内的正、负数。总之,一个特定的字节可以代表28(即256种)不同事物中的一个。

字节简写为B,它是计算机中用来表示存储空间大小的基本容量单位。

与字节有关的常用换算单位如下:

1B=8bit;1KB=1024B=210B;1MB=1024KB=210KB=220B;1GB=1024MB=210MB=230B;1TB=1024GB=210GB=240B;1PB=1024TB=210TB=250B;1EB=1024PB=210PB=260B。

提示:位与字节区别:位是计算机中的最小数据单位,字节是计算机中的基本信息单位。

(3)字(Word)

在计算机中作为一个整体被存取、传送、处理的二进制数字符串叫做一个“字”或“单元”。每个字中二进制位数的长度,称为字长。

一个字由若干个字节组成,不同的计算机系统的字长是不同的,常见的有8位、16位、32位、64位等。字长越长,计算机一次处理的信息位就越多,精度就越高。字长是计算机性能的一个重要指标。目前大部分计算机都是32位的。

在汇编语言程序中,字为16位二进制数,即1Word=2Byte=16bit;把32位二进制数,即两个字称为双字(Double Word)。

2.定点数表示方法

在选择计算机数值的表示方式时,需要考虑以下几个因素:[1]要表示的数的类型(小数、整数、实数和复数);[2]可能遇到的数值范围;[3]数值精确度;[4]数据存储和处理所需要的硬件代价。

计算机处理的数值数据多数带有小数。小数点在计算机中通常有两种表示方法:一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。

所谓定点数,就是约定计算机中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。

(1)定点小数

定点小数约定的小数点位置在符号位之后、有效数值部分最高位之前,即一个数的最高二进制位是符号位,用来表示数的符号,而小数点的位置默认为在符号位后面,不单独占一个二进制位。

例如,数据x的形式为x=x0.x1x2xn(其中,x0为符号位,x1xn是数值的有效部分,也称为尾数,x1为最高有效位),则x在计算机中的表示形式为:

所以,在一个定点小数中,符号位右边的所有二进制位数表示的是一个纯小数。

(2)定点整数

定点整数约定小数点位置在有效数值部分最低位之后,即一个数的最高二进制位是符号位,用以表示数的符号;而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位。

例如数据x的形式为x=x0x1x2xn(其中,x0为符号位,x1xn是尾数,xn为最低有效位),则x在计算机中的表示形式为:

所以,在一个定点整数中,符号位右边的所有二进制位数表示的是一个纯整数。

3.浮点数表示方法

在计算机中,定点数通常只用于表示纯整数或纯小数,而对于既有整数部分又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。

计算机中所说的浮点数就是指小数点位置不固定的数。一般地,一个既有整数部分又有小数部分的十进制数D可以表示成如下形式:

D=R×10N

式中,R为一个纯小数;N为一个整数。

例如,一个十进制数123.456可以表示成0.123456×103,十进制小数0.00123456可以表示成0.123456×10-2。纯小数R的小数点后第一位一般为非零数字。

同样,对于既有整数部分又有小数部分的二进制数也可以表示成如下形式:

D=R×2N

式中,R为一个二进制定点小数,称为D的尾数;N为一个二进制定点整数,称为D的阶码,它反映了二进制数D的小数点的实际位置。

为了使有限的二进制位数能表示出最多的数字位数,定点小数R的小数点后的第一位(即符号位的后面一位)一般为非零数字(即为“1”)。

4.原码的表示方法

二进制数跟十进制数一样也有正负之分。在计算机中,常采用数的符号和数值一起编码的方法来表示数据。常用的有原码、反码、补码、移码等。这几种表示法都将数据的符号数码化。为了区分一般书写时表示的数和机器中编码表示的数,我们称前者为真值,后者为机器数或机器码。

所谓原码就是前面所介绍的二进制定点数表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

(1)定点小数的原码

假设定点小数的原码形式为x0.x1x2xn,则其原码表示的定义为

式中,[x]是机器数;x是真值。

例如,x=+0.1001,则[x]=0.1001

x=-0.1001,则[x]=1.1001

(2)定点整数的原码

假设定点整数的原码形式为x0x1x2xn,则其原码表示的定义为

原码表示法的优点是比较直观、简单易懂,但它的最大缺点是加法运算复杂。这是因为,当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。而在进行减法时,还要比较绝对值的大小,然后减去小数,最后还要给结果选择恰当的符号。显然,利用原码做加减法运算是不太方便的。为了解决这些矛盾,人们找到了补码表示法。

5.补码的表示方法

由于计算机的运算受一定字长的限制,属于有模运算,所以,在计算机中可以使用补码进行计算。在定点小数机器中,数最大不超过1,也就是负的小数对“1”的补码是等价的。但实际上,负数的符号位还有一个“1”,要把它看成数的一部分,所以要对2求补码,也就是以2为模数。

(1)定点小数的补码

假设定点小数的补码形式为x0.x1x2xn,则其补码表示的定义为

对于0,在补码情况下只有一种表示形式,即

[+0]=[-0]=0.000…0

(2)定点整数的补码

假设定点整数的补码形式为x0x1x2xn,则其补码表示的定义为

采用补码表示法进行减法运算就比原码方便多了。因为不论数是正还是负,机器总是做加法,减法运算可变成加法运算。但根据补码定义,正数的补码与原码形式相同,而求负数的补码要减去|x|。为了用加法代替减法,结果还得在求补码时做一次减法,这显然是不方便的。从下面介绍的反码表示法中可以获得求负数补码的简便方法,解决负数的求补问题。

6.反码的表示方法

反码表示法中,符号的表示法与原码相同。正数的反码与正数的原码形式相同;负数的反码符号位为1,数值部分通过将负数原码的数值部分各位取反(0变1,1变0)得到。

(1)定点小数的反码

假设定点小数的反码形式为x0.x1x2xn,则其反码表示的定义为

对于0,在反码情况下只有两种表示形式,即

[+0]=0.000…0

[- 0]=1.111…1

(2)定点整数的反码

假设定点整数的反码形式为x0x1x2xn,则其反码表示的定义为

7.移码的表示方法

移码通常用于表示浮点数的阶码。阶码是个n位的整数,假设定点整数移码形式为x0x1x2xn时,移码的定义是:

[x]=2n+x-2nx<2n

由移码的定义式可知,对于同一个整数,其移码与其补码数值位完全相同,而符号位正好相反。

将十进制真值x=-127、-1、0、+1、+127分别表示为8位原码、反码、补码、移码值的结果见表1-2。

表1-2 原码、反码、补码、移码值举例

8.BCD码的表示方法

计算机中使用的是二进制数,人们习惯使用的是十进制数,因此,输入到计算机中的十进制数需要转换成二进制数;数据输出时,应将二进制数转换成十进制数。为了方便,大多数通用性较强的计算机需要能直接处理十进制形式表示的数据。为此,在计算机中还设计了一种中间数字编码形式,它把每一位十进制数用4位二进制编码表示,称为二进制编码的十进制表示形式,简称BCD码(Binary Coded Decimal),又称为二-十进制数。

4位二进制数码,可编码组合成16种不同的状态,而十进制数只有0、1、…、9这十个数码,因此选择其中的十种状态做BCD码的方案有许多种,如8421BCD码、格雷码、余3码等。编码方案见表1-3。

表1-3 常用BCD编码对照表

最常用的BCD码是8421BCD码。8421BCD码选取4位二进制数的前10个代码分别对应表示十进制数的10个数码,1010~1111这6个编码未被使用。从表1-2中可以看到这种编码是有权码。4个二进制位的位权从高向低分别为8、4、2和1。若按权求和,和数就等于该代码所对应的十进制数,例如0110=22+21=6。

把一个十进制数变成它的8421BCD码数值,仅对十进制数的每一位单独进行即可。例如变1986为相应的8421BCD码表示,结果为0001 1001 1000 0110。反转换过程也类似,例如变0101 1001 0011 0111为十进制数,结果应为5937。

1.1.3 字符数据在计算机中的表示方法

计算机中数据的概念是广义的,计算机除了处理各种数之外,还要处理大量符号,如英文字母、汉字等非数值的信息。例如,当要用计算机编写文章时,就需要将文章中的各种符号、英文字母、汉字等输入计算机,然后由计算机进行编辑排版。因此,计算机要对各种文字进行处理。

通常,计算机中的数据可以分为数值型数据与非数值型数据。其中数值型数据就是常说的“数”(如整数、实数等),它们在计算机中是以二进制形式存放的,这部分内容在1.1.2节中已做了讲解。而非数值型数据与一般的“数”不同,通常不表示数值的大小,而只表示字符或图形等信息,但这些信息在计算机中也是以二进制形式来表示的。本节具体讲解字符数据在计算机中的表示方法。

1.字符的编码

目前,国际上通用的且使用最广泛的字符有十进制数字符号0~9,大小写的英文字母,各种运算符、标点符号等,这些字符的个数不超过128个。为了便于计算机识别与处理,这些字符在计算机中是用二进制形式来表示的,通常称为字符的二进制编码。

由于需要编码的字符不超过128个,因此,用7位二进制数就可以对这些字符进行编码。但为了方便,字符的二进制编码一般占8个二进制位,它正好占计算机存储器的一个字节。

目前国际上通用的是美国国家信息交换标准代码(American Standard Code for Information Interchange),简称为ASCII码(取英文单词的第一个字母的组合)。

用ASCII表示的字符称为ASCII码字符,表1-4是ASCII码编码表。

表1-4 ASCII码编码表

ASCII码规定每个字符用7位二进制编码表示,表1-4中第一行是第6、5、4位的二进制编码值,第一列是第3、2、1、0位的十进制编码值,第一行、第一列的交点则是指定的字符。7位二进制可以给出128个编码,表示128个常用的字符。其中95个编码,对应着计算机终端能输入并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,0~9这10个数字符,通用的运算符和标点符号=、-、*、/、<、>、,、:、· 、?、。、(、)、{、}等。

例如要知道字母“A”的ASCII码,查表得知字母A在第2行第5列的位置。行指示了ASCII码第3、2、1、0位的状态,列指示第6、5、4位的状态,因此字母A的ASCII码是1000001B=41H。

2.汉字的编码

为了适应中文信息处理的需要,1981年国家标准局公布了GB2312—80《信息交换用汉字编码字符集——基本集》,收集了常用汉字67 763个,并给这些汉字分配了代码。

用计算机进行汉字信息处理,首先必须将汉字代码化,即对汉字进行编码,称为汉字输入码。汉字输入码送入计算机后还必须转换成汉字内部码,才能进行信息处理。处理完毕之后,再把汉字内部码转换成汉字字形码,才能在显示器或打印机输出。因此汉字的编码有输入码、内码、字形码三种。

(1)汉字的输入码

目前,计算机一般是使用西文标准键盘输入的。为了能直接使用西文标准键盘输入汉字,必须给汉字设计相应的输入编码方法。其编码方案有很多种,主要的分为三类:数字编码、拼音码和字形编码。

[1]数字编码。常用的数字编码是国标区位码,规定全部国标汉字及符号组成94×94的矩阵。在这矩阵中,每一行称为一个“区”,每一列称为一个“位”。这样,就组成了94个区(01~94区),每个区内有94个位(01~94)的汉字字符集。区码和位码简单地组合在一起(即两位区码居高位,两位位码居低位)就形成了“区位码”。区位码可唯一确定某一个汉字或汉字符号;反之,一个汉字或汉字符号都对应唯一的区位码。例如,汉字“玻”的区位码为“1803”(即在18区的第3位)。

所有汉字及符号的94个区划分成如下四个组:

◆ 1~15区为图形符号区,其中,1~9区为标准区,10~15区为自定义符号区。

◆ 16~55区为一级常用汉字区,共有3755个汉字,该区的汉字按拼音排序。

◆ 56~87区为二级非常用汉字区,共有3008个汉字,该区的汉字按部首排序。

◆ 88~94区为用户自定义汉字区。

数字编码输入的优点是无重码,输入码与内部编码的转换比较方便;缺点是代码难以记忆。

[2]拼音码。拼音码是以汉语拼音为基础的输入方法。凡掌握汉语拼音的人,不需训练和记忆,即可使用,但汉字同音字太多,输入重码率很高,因此按拼音输入后还必须进行同音字选择,影响了输入速度。

[3]字形编码。字形编码是用汉字的形状来进行的编码。汉字总数虽多,但是由一笔一画组成,全部汉字的部件和各行其是是有限的。因此,把汉字的笔画部件用字母或数字进行编码,按笔画的顺序依次输入,就能表示一个汉字了。五笔字型编码就是最有影响的一种字形编码方法。

(2)汉字的内码

同一个汉字以不同输入方式进入计算机时,编码长度及0、1组合顺序差别很大,使汉字信息进一步存取、使用、交流十分不方便,必须转换成长度一致、且与汉字唯一对应的能在各种计算机系统内通用的编码,满足这种规则的编码叫汉字内码。

汉字内码是用于汉字信息的存储、交换检索等操作的机内代码,一般采用两个字节表示。英文字符的机内代码是7位的ASCII码,当用一个字节表示时,最高位为“0”。为了与英文字符能够区别,汉字机内代码中两个字节的最高位均规定为“1”。

有些系统中字节的最高位用于奇偶校验位或采用扩展ASCII码,这种情况下用三个字节表示汉字内码。

(3)汉字的字形码

存储中计算机内的汉字需要在屏幕上显示或在打印机上输出时,需要知道汉字的字形信息。汉字内码并不能直接反映汉字的字形,而要采用专门的字形码。

目前的汉字处理系统中,字形信息的表示大体上有两类形式:一类是用活字或文字版的母体字形形式;另一类是点阵表示法、矢量表示法等形式,其中最基本的,也是大多数字形库采用的是以点阵的形式存储汉字字形编码的方法。

点阵字形是将字符的字形分解成若干“点”组成的点阵,将此点阵置于网格上,每一小方格是点阵中的一个“点”,点阵中的每一个点可以有黑白两种颜色,有字形笔画的点用黑色;反之用白色,这样就能描写出汉字字形了。

图1-1是汉字“次”的点阵,如果用十进制的“1”表示黑色点,用“0”表示没有笔画的白色点,每一行16个点用两字节表示,则需32字节描述一个汉字的字形,即一个字形码占32字节。

图1-1 汉字“次”的点阵

一个计算机汉字处理系统常配有宋体、仿宋、黑体、楷体等多种字体。同一个汉字不同字体的字形编码是不相同的。

根据汉字输出的要求不同,点阵的多少也不同。简易型汉字为16×16点阵,提高型汉字为24×24点阵、32×32点阵,甚至更高。点阵越大,描述的字形越细致美观,质量越高,所占存储空间也越大。汉字点阵的信息量是很大的,以16×16点阵为例,每个汉字要占用32个字节,国标两级汉字要占用256KB。因此字模点阵只能用来构成汉字库,而不能用于机内存储。

通常,计算机中所有汉字的字形码集合起来组成汉字库(或称为字模库)存放在计算机里,当汉字输出时由专门的字形检索程序根据这个汉字的内码从汉字库里检索出对应的字形码,由字形码再控制输出设备输出汉字。汉字点阵字形的汉字库结构简单,但是当需要对汉字进行放大、缩小、平移、倾斜、旋转、投影等变换时,汉字的字形效果不好。若使用矢量汉字库、曲线字库的汉字,其字形用直线或曲线表示,能产生高质量的输出字形。

综上所述,汉字从送入计算机到输出显示,汉字信息编码形式不尽相同。汉字的输入编码、汉字内码、字形码是计算机中用于输入、内部处理、输出三种不同用途的编码,不要混为一谈。

1.1.4 图形数据在计算机中的表示方法

图形信息是一种重要媒体,与文字、声音等其他媒体相比,它具有直观、明了、含义丰富等优点。目前,图形在计算机中有两种数字化表示方法,一种称为几何图形或矢量图形,简称图形(Graphics);另一种称为点阵图像或位图图像(Image)。下面分别进行简单的介绍。

1.图形(Graphics)

图形表示法是根据画面或场景中包含的内容,分别用几何要素(如点、线、面、体)和物体表面的材料与性质及环境的光照条件、用户观察位置等来描述。

计算机图形学的任务是先对处理对象进行描述(建模),然后对该模型进行必要的处理加工,最后再产生能正确反映该物体的或场景视觉图像的图形输出。

计算机不仅能够生成静止图形,而且还能生成各种运动、变化的动态图形。计算机图形学在计算机辅助设计和制造(CAD/CAM)、地理信息和自然资源的图形制作、作战指挥和军事训练、计算机动画和计算机艺术、电子出版物等方面有着广泛的应用。

2.图像(Image)

图像表示法是把原始画面分离成M×N个像素(Pixel),组成一个矩阵,所以它又称为位图表示法或点阵表示法。黑白画面用一个二进制整数来表示每个像素的灰度值,彩色画面用多个二进制整数来表示每个彩色像素的3个分量(红色R、绿色G、蓝色B)的灰度值。

图像表示法适合表现包含大量细节的类似于照片和绘画之类的画面。主要有以下参数:

[1]图像尺寸。指图像的大小,即水平方向包含的像素的个数。

[2]最大颜色(灰度)数。指图像中可能出现的不同颜色(灰度)的最大数目,它取决于组成该图像的所有平面中像素的位数之和,也叫图像深度。

[3]图像数据量。一幅图像的数据量以字节为单位,可以按下面的公式计算。

图像数据量=图像宽度×图像高度×图像深度/8(B)

计算机中所处理的黑白或彩色数字图像,既可以通过工具软件(如Photoshop)来创作生成,也能够利用硬件设备(如扫描仪、数码相机)来采集。图形与图像两种表示方法各有优缺点,它们互相补充、互相依存,在一定条件下还可以互相转换,它们在计算机各种应用领域中起着非常重要的作用。