收藏 分享(赏)

03-计算机中的数据表示与存储.ppt

上传人:天天快乐 文档编号:1367755 上传时间:2018-07-05 格式:PPT 页数:95 大小:1.68MB
下载 相关 举报
03-计算机中的数据表示与存储.ppt_第1页
第1页 / 共95页
03-计算机中的数据表示与存储.ppt_第2页
第2页 / 共95页
03-计算机中的数据表示与存储.ppt_第3页
第3页 / 共95页
03-计算机中的数据表示与存储.ppt_第4页
第4页 / 共95页
03-计算机中的数据表示与存储.ppt_第5页
第5页 / 共95页
点击查看更多>>
资源描述

1、2018年7月5日,1,第三章 计算机中数据表示与存储,2018年7月5日,2,第三章 计算机中数据表示与存储,3.1 位置计数制3.2 负数在计算机中的编码3.3 实数在计算机中的表示3.4 十进制数的编码3.5 字符的编码,2018年7月5日,3,计算机中信息的表示,在计算机内部,声、文、图统一用0、1表示,2018年7月5日,4,信息的概念,用文字、数字、符号、声音、图形和图像等方式表示和传递的数据、知识和消息。在计算机中,都是用二进制来处理和存储信息的。所有的数值都要用二进制数表示所有的字符也要用二进制数表示,2018年7月5日,5,1.1 位置计数制的概念,数制:是指用一组固定数字和

2、一套统一的规则来表示数目的方法。位置计数制:同样的数字出现在数的不同位置,所代表的值是不同的。位置计数制也称为进位计数制。每一位计满若干个数后就会进位。数码:指表示每一位数字可能使用的符号(di : 第i位的数字;)。数码在数字中所占的位置叫数位I。基数:反映这个数制中使用的数字的数目,对于十进制,b等于10,对于二进制,b就是2; 。 位权 : 任何一个数都是由一串数码表示的,每一位所表示的值除其本身的数值外,还与它所处的位置有关,由位置决定的值就叫权。对于十进制,第i位的权值就是10i。,2018年7月5日,6,例如:十进制数54154.145,2018年7月5日,7,1.2 常用数制,2

3、018年7月5日,8,二进制数,一个二进制数的特点:它只有二个的数字符号,即:0、1。它是逢“二”进位的。 1 0 1 . 1 1,第0位,第1位,第2位,第-1位,第-2位,第n位对应的权值为2n,计数制的基数为2,实际表示的数值十进制大小为:101.11=1X22+0X21+1X20+1X2-1+1X2-2,2018年7月5日,9,莱布尼茨(1646-1716),德国伟大的数学家、物理学家、唯心主义哲学家。年,系统提出二进制的运算法则 。,1与0,一切数字的神奇渊源。这是造物的秘密美妙的典范,因为,一切无非都來自上帝。,二进制的发明者莱布尼茨,德国图灵根著名德郭塔王宫图书馆保存着一份莱布尼

4、茨珍贵的手稿,其标题:,从中国八卦图参悟出二进制数之真谛,2018年7月5日,10,计算机为何采用二进制,可行性只有0,1两个数码,采用电子器件很容易物理上实现。 可靠性只有两种状态,在传输和处理时不容易出错工作可靠,抗干扰能力强。 简易性二进制的运算法规简单,使得计算机的运算器结构简化,控制简单。 逻辑性0、1两种状态代表逻辑运算中的“假”和“真”,便于用逻辑代数作为工具研究逻辑线路。,2018年7月5日,11,进位计数制,请写出020每个数字4种进位计数制表示请总结4种进制的特点有效数字逢J进位小数点移动,数值有什么变化?,2018年7月5日,12,二进制数、八进制数和十六进制数之间的对应

5、关系,2018年7月5日,13,进位计数制,不同进制的习惯书写形式:二进制:Binary Bin八进制:Octal Oct O十进制:Decimal Dec D十六进制:Hex Hex H例如:(101011)2 (101011)B (1234673)8 (1234673)O O2143(1973)10 (1973)D 1234(A46F)16 (A46F)H A46FH 0xA46F,2018年7月5日,14,1.3 数制的转换,不同数制的转换,BIN,Oct,Dec,Hex,三大类转换方法:1.非十进制转换为十进制的方法2.十进制转换为其他进制的方法3. 二数制、八进制、16进制之间的转换

6、方法,2018年7月5日,15,数制的转换,1非十进制转换为十进制按权展开求和,即各数位与相应位权值相乘以后再相加即为对应的十进制数。十进制数:由09数码组成,位权为10i二进制数:由0、1组成,位权为2i八进制数:由07组成,位权为8i十六进制数:由0F组成,位权为16i,2018年7月5日,16,非十进制转换为十进制,设J进制的数,n位整数,m位小数:(xn-1xn-2x1x0.x-1x-2x-m)J=xn-1Jn-1+xn-2Jn-2+x1J1+x0J0 +x-1J-1+x-2J-2+x-mJ-m,2018年7月5日,17,十六进制数 1AF.C = 1 162 +A 161 + F 1

7、60 + C 161 = 1256 + 1016 + 15 + 120.0625 = 256 + 160 +15 + 0.75= 431.75,八进制数127.21 = 1 82 +281 + 780 + 281 + 182 = 64 + 16 + 7 + 0.25 + 0.15625 = 87.265625,二进制数10110.101 = 124 +023 +122 +121+020+121+022+123 = 16 +0 +4 + 2 + 0 + 0.5 +0 +0.125 = 22.625,十进制数1232.25 = 1 103 + 2102 +3101 + 2100 + 2101 +

8、5102,转换示例,2018年7月5日,18,十进制转换为非十进制,整数部分:除基取余,逆序读数。 除J取余,即整数部分不断除以J取余数,直到商为0为止,最先得到的余数为最低位,最后得到得余数为最高位。小数部分:乘基取整,顺序读数。 乘J取整,即小数部分不断乘以J取整数,直到积为0或达到有效精度为止,最先得到的整数为最高位(最靠近小数点),最后得到的整数为最低位。,2018年7月5日,19,十进制数59转换为二进制数,59,余数,(59)10,(111011)2,(111011)2,2018年7月5日,20,十进制小数0.625转换为二进制数,(0.625)10,0.625,(0.101)2,

9、(0.101)2,2018年7月5日,21,整数部分除2取余,小数部分乘2取整,【例】100.345(D) =,1100100,01011,(B),十化二,.,2018年7月5日,22,【例】100 (D) =,十化十六,144,(O),64,(H),除八取余倒序排列,除16取余倒序排列,十化八,【例】 100 (D) =,2018年7月5日,23,八进制、十六进制与二进制的相互转换,每一个八进制数码对应三位二进制数。每一个十六进制数对应四位二进制数。例:(16 2)2C1D(H) 10 1100 0001 1101(B) 2 C 1 D( 8 2)17123(O) 1 111 001 010

10、 011(B) 1 7 1 2 3,2018年7月5日,24,二进制转换为八进制、十六进制,整数部分:从右向左进行分组。 小数部分:从左向右进行分组,转化成八进制三位一组,不足补零。转化成十六进制四位一组,不足补零。,2018年7月5日,25,转化示例,11 0110 1110.1101 0100 B)=36F.D4(H) 3 6 F . D 4 =36F.d1(H) 1 101 101 110.110 101(B)= 1556.65(O) 1 5 5 6 6 5 (0011 0110 1111 0111.1100 0100)2=(36F7.C4 )16,01不足4位后边补两个零变为0100

11、!,2018年7月5日,26,1.4 基本的二进制运算,算数运算:+ - ,+ 11.01,1000.11,101.10,2018年7月5日,27,示例,计算:101.10 + 11.01。解: 1 0 1 . 1 0 + 1 1 . 0 1 1 0 0 0 . 1 1 结果是:101.10 + 11.01 = 1000.11,计算:101.10 * 10.1。 1 0 1 . 1 0 * 1 0 . 1 1 0 . 1 1 0 0 0 0 . 0 0 1 0 1 1 . 0 1 1 0 1 . 1 1 0 结果是:101.10 * 10.1 = 1101.110,2018年7月5日,28,二

12、进制的逻辑运算,逻辑运算符:其它的表示:& 、(与) ! 、 (非) | 、+ (或) (异或),2018年7月5日,29,“与”运算,逻辑与真值表,与电路示意图,2018年7月5日,30,“或”运算,逻辑或真值表,或电路示意图,2018年7月5日,31,“非”运算,逻辑非真值表,非电路示意图,2018年7月5日,32,练习:1011101 101 = ?1011011 101 = ?10110110 11110000 = ?,2018年7月5日,33,1.5 数据存储的组织形式,位一个二进制代码称为一位,记为bit(读为比特)。计算机中最直接、最基本的操作就是对二进制位的操作。字节以8位二进

13、制代码为一个单元存放在一起,称为一个字节,记为Byte。,2018年7月5日,34,字、字长CPU在单位时间内能一次处理的一组二进制数称为字(Word),这组二进制数的位数就是字长。常见的有8位、16位、32位、64位等。,2018年7月5日,35,地址 为了便于存放、查找和使用,每个存储单元必须有唯一的编号,称之为地址。通过地址可以找到数据所在的存储单元,读取或存入数据。,2018年7月5日,36,2 数值编码,计算机处理的数值有:带符号数:整数定点数:表示纯小数或整数,小数点位置固定浮点数:表示实数,小数点位置浮动变化计算机中常用的数据单位:位 bit 一位二进制数,取值只有0或1字节 B

14、yte 即8位二进制数,最基本的容量单位 千字节KByte 1KB=1024(210)Byte 兆字节MByte 1MB=1024(210)KB 吉字节GByte 1GB=1024(210) MB字长 Word 计算机能同时进行处理的二进制位数。32位机/64位机,2018年7月5日,37,位数不同的数的表示范围,2018年7月5日,38,带符号数的表示方式带符号数也需要对符号位进行编码机器数,正号编码为0;负号编码为1机器数的三种编码方式:原码反码补码计算机中采用的方式正数的原码、反码、补码都相同+76:01001100,2018年7月5日,39,原码、反码和补码,(1) 原码,0的表示不唯

15、一不便于进行加减运算,10000101,00000100,+,10001001,-5的原码,结果为-9,4的原码,2018年7月5日,40,(2)反码,0的表示不唯一不便于进行加减运算,正数的反码与其原码相同,最高位为0表示正数,其余位为数值位。负数的反码是其符号位取1,对应的数值部分按位取反求得。,2018年7月5日,41,反码,2018年7月5日,42,反码加法规则,两个数变为反码,直接相加将进位加到和的最低位,就是和的反码-75 + 85(10 110 100)反+(01 010 101)反=(00 001 010)反 = 10D,2018年7月5日,43,(3)补码,0的表示唯一正确进

16、行加减运算,加减法统一为加法。,正数的补码与其原码相同。负数的补码是在其反码的最低位上加1得到。,2018年7月5日,44,二进制值(1字节) 十进制值 1000 0000 -128 1000 0001 -127 1000 0010 -126 1000 0011 -125 . . 1111 1110 -2 1111 1111 -1,2018年7月5日,45,补码原理的分析,“模”的概念:指一个计量系统的计数范围。如时钟计量范围是011,模=12。 计算机也可以看成一个计量机器,它也有一个计量范 围,即都存在一个“模”。n位存储长度的计算机计量范围是02(n)-1,模=2(n)。 “模”实质上是

17、计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的 余数。任何有模的计量器,均可化减法为加法运算。假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。,2018年7月5日,46,2018年7月5日,47,原码、反码和补码转换规则,正数的原码、反码、补码的表示形式相同,符号位为0,数值位是真值本身;负数的原码、反码、补码的符号位都为1,数值位原码是真值本身,反码是各位取反,补码是各位取反后,最低

18、位加1。真值0的原码和反码表示不唯一,而补码表示是唯一的。,2018年7月5日,48,补码运算,引入补码的主要目的在于简化减法运算,可以把减法运算用补码加法来实现。计算机中就只有加法计算。补码运算定律:( x + y )补( x )补 + ( y )补下面根据x和y的符号和绝对值的大小,可分四种情况举例验证:正数+正数负数+负数正数+负数,正数负数的绝对值正数+负数,正数 |y|x = 3DH=+ 0111101 y= -21H = -0100001( x )补= 00111101( y )补= 1 1011111( x )补+ ( y )补= 00011100,二进制按位相加计算,在相加过程

19、中超出8位的位自然丢弃,只保留8位。计算结果最高位为0表示正数。( x + y )补= ( 1CH )补= 00011100 = ( x )补+ ( y )补,2018年7月5日,51,补码运算,正数x和负数y相加,且 |x| 127了,称为正向溢出。如果两个负数之和小于-128,就会产生负向溢出。防止溢出的办法是用更多的位,如16位、32位来表示数。 思考:32bit补码表示的数的范围是多少?,2018年7月5日,53,3 实数在计算机中的表示,定点数和浮点数在计算机中,小数点的表示采用人工约定的方法来实现,即约定小数点的位置,这样可以节省存储空间。数的符号在计算机中“+”和“-”分别用“0

20、”和“1”来表示。一般将正负符号符号化的数称为机器数,其对应的用“+”和“-”表示的数称为真值。,2018年7月5日,54,定点数,定点数表示方法只能表示纯小数或整数,小数点位置固定,定点小数表示:,定点整数表示:,2018年7月5日,55,定点数,定点整数,小数点,无符号位,小数点,定点小数,2018年7月5日,56,110.011(B)=1.100112+10=11001.12-10=0.1100112+11,N= 数符尾数2阶符阶码尾数的位数决定数的精度 阶码的位数决定数的范围,规格化的形式:尾数的绝对值大于等于0.1并且小于1,从而唯一地规定了小数点的位置。,定点整数,定点小数,浮点数

21、,2018年7月5日,57,浮点数,浮点数表示方法在机器中采用以2为底的科学计数法N=(-1)s M 2eM:尾数,e:阶码二进制数110101.101=(-1)0 1.101011012101 则:S=0,M=1.10101101,e=101 (5)二进制数-0.000101=(-1)1 1.012-100 则:S=1,M=1.01,e=-100 (-4),2018年7月5日,58,浮点数存储,S M e三者都存储,则相当于将该数存储IEEE754标准:浮点数(单精度),用32bit存储双精度数,用64bit存储,S,e(8bit),M(23bit),S,e(11bit),M(52bit),

22、e=e+27-1,e=e+210-1,M为M的小数部分,2018年7月5日,59,2.2 数值编码,举例:-12.5D = -1 100.1B规格化 -1.1001B 阶码为3隐藏最高位1,尾数为:100100 (23位)阶码 3+127 = 130 阶码应是 10 000 010,1,10000010,100100,-12.5,2018年7月5日,60,浮点数表示,思考:能否准确的表示出浮点数1.1?(1.1)D=1.0001100110011001100110011 1.00011001100110011001101B =(1.1000000238418579)DS=0,e=0111111

23、1,M=000110011.1101,0,01111111,0001100111101,注意:0的存储不按以上规则,不论是filoat还是double实数,0都存为全0的代码。即当e=00000000时,M的整数位不再取1,而是取0,这样0在存储时为32bit的0,2018年7月5日,61,今后编程会碰到的一个小问题,比较两个浮点型数据变量是否相等,如何比较?比较两个整型变量是否相等用的是=那么浮点型数据变量是否相等还能不能用=?,2018年7月5日,62,4 十进制数的编码,2018年7月5日,63,5 字符的编码,西文字符1963年,ASCII之父鲍勃比默尔制定了ASCII,1968年才成

24、为美国标准。,他的汽车牌照为“德克萨斯ASCII”,2018年7月5日,64,7位编码,编码范围0127 每个字符占一个字节,最高位为0,需要时用作奇偶校验。控制字符:032和127;其余94个为普通字符: 空格20H32 09 30H39H 4857 AZ 41H5AH 6590 az 61H7AH 97122,5.1 ACSII码,2018年7月5日,65,2018年7月5日,66,扩展的ASCII码,2018年7月5日,67,5.2 汉字的编码,汉字处理流程,2018年7月5日,68,汉字的处理过程,输入码,国标码和机内码,字形码,汉字输入码:也称外码五笔输入法、拼音输入法、智能ABC、

25、仓颉输入法、GBK输入法汉字的编码:国标码和机内码: GB2312-80、GBK、GB18030-2000字形码:用数字来表示汉字的形状(矩阵)。常用的字库:点阵字库/矢量字库,2018年7月5日,69,(1)汉字外码汉字输入码,区位输入法拼音编码字形编码音形编码手写输入语音输入扫描输入,2018年7月5日,70,(2)汉字交换码,汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准。我国一直延用该标准所规定的国标码作为统一的汉字信息交换码。GB2312体系(简体)GB2312-80GBKGB18030-2000Big5(繁体),2018年7月5日,71,国标码

26、(GB231280),GB2312-80每个汉字占2个字节(机器内码),每个字节的最高位为0,因此只用后7位进行编码,第一个字节称为高字节,第二个字节称为低字节一种收录7445个字符(6763个汉字和682个其它字符),字库分为一级字库和二级字库。一级字库为3755个汉字。可表示21416384个汉字。实际没用那么多国标码每个字节的编码范围为33(21H)126(7EH),国标码区位码3232(2020H),2018年7月5日,72,国标码(GB231280),2018年7月5日,73,Big5(繁体,香港和台湾地区使用),高字节,低字节,0x81,0xFE,0x00,0xFF,0x00,0x

27、FF,0x7E,0xFE,0xA1,0x40,2018年7月5日,74,国标码不能直接作内码,国标码有可能造成误解。 例如:“中”字的区位码5448 (3630H),国标码为8680,对应的ASCII字符为“VP”。,内存中,若汉字以GB2312的内码表示,下面5个字符串中有几个可以用来表示汉字? 6EH 8DH B5H 7CH 20H,思考:,2018年7月5日,75,(3)机内码,在计算机内部存储、处理和传输用的信息编码。机内码 = 国标码8080H(1000 0000 1000 0000)高字节和低字节的高位置1,以跟高位是0的ASCII码区分机内码每个字节的编码范围为161(A1H)2

28、54(FEH),2018年7月5日,76,汉字编码,常见的GB2312-80(简体),GB2312-80每个汉字占2个字节(机器内码),每个字节的最高位为1,因此只用后7位进行编码,第一个字节称为高字节,第二个字节称为低字节一种收录7445个字符(6763个汉字和682个其它字符),字库分为一级字库和二级字库。一级字库为3755个汉字。,2018年7月5日,77,(4)区位码,按GB2312-18国标规定,汉字编码表有94行94列,其行号0194称为区号,列号0194称为位号。一个汉字所在的区号和位号简单地组合在一起就构成了这个汉字的区位码。,2018年7月5日,78,(4)国标区位码,汉字分

29、94区,每个区94个汉字,4位十进制编码,区号和位号均为两位十进制数。GB2312-80区位码 =区号+位号(采用十进制)例1:汉字“啊”处于16区的01位,则其区位码为1601 区位码每个字节的编码范围为1(01H)94(5EH)“啊”字的国标码为3021H“啊”字的机内码为B0A1H“区位输入法”或“内码输入法”就是输入区位码或机内码,2018年7月5日,79,两种表示方式:1.点阵式2.矢量式点阵方式汉字字形点阵1616、2424、3232、4848。,图1616汉字点阵,特点:编码、存储方式简单、无需转换直接输出,但字形放大失真,而且同一种字体不同的点阵需要不同的字库。,(5)汉字字形

30、码,2018年7月5日,80,矢量方式存储的是描述汉字字形的轮廓特征,字符中每一笔画的顶点坐标。 特点:存储量小,字体放大不失真。,矢量字形,2018年7月5日,81,5.3 Unicode编码,Unicode 也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是Universal Multiple-Octet Coded Character Set,简称为UCS。UCS可以看作是Unicode Character Set的缩写。ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的Unicode只与ASCII兼容(更准确地

31、说,是与ISO-8859-1兼容),与GB码不兼容。例如“汉”字的Unicode编码是6C49,而GB码是BABA。,2018年7月5日,82,Unicode编码,历史上存在两个试图独立设计Unicode的组织国际标准化组织(ISO)开发了ISO 10646项目一个软件制 造商的协会(unicode.org)开发了Unicode项目。1991年前后,双方开始合并双方的工作成果,并为创立一个单一编码表而协同工作。Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码。,2018年7月5日,83,Unicode中的UCS与UTF,UCS规定了怎么用多个字节表示各

32、种文字。怎样传输这些编码,是由UTF(UCS Transformation Format)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16。,2018年7月5日,84,UCS-2、UCS-4、BMP,UCS有两种格式:UCS-2是用两个字节编码, UCS-2有216=65536个码位,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。UCS-4有231=2147483648个码位。UCS -4根据最高位为0的最高字节分成27=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为 256行 (rows),每

33、行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。,2018年7月5日,85,UTF编码,UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:例如“汉”字的Unicode编码是6C49。6C49在08

34、00-FFFF之 间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。,2018年7月5日,86,UTF-16字节序和BOM,UTF -8以字节为编码单元。UTF-16以两个字节为编码单元,存在字节序问题。例如收 到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是 “乙”?Unicode规范中推荐

35、的标记字节顺序的方法是BOM,Byte Order Mark。在UCS 编码中有一个叫做ZERO WIDTH NO-BREAK SPACE的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符ZERO WIDTH NO-BREAK SPACE。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符ZERO WIDTH NO-BREAK SPACE又被称作BOM。UTF -8不需要BOM来表明字节顺序,但可以用BOM来表明编

36、码方式。字符ZERO WIDTH NO-BREAK SPACE的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。,2018年7月5日,87,6 模拟信号编码的一般过程,除了数字、字符外,现代计算机还要处理各种多媒体数据,包括语音、声音、图片、视频等。所有这些数据都是通过模拟信号表示的。模拟信号的特点是信号是连续变化的。模拟信号要能够被计算机来处理,必须首先经过数字化。数字化的过程,需要三个阶段。(1)模拟信号的离散化。也就是按一定规律,在连续的模拟信号中,取出若干离散的值来进行处理。(2

37、)离散值的标称化。取出的离散值仍然能各不相同,取值的种类太多,不便于进一步处理。就需要将这些离散值向某些标准的值取齐,以减少要处理的信号值。(3)对有限的标称值进行二进制编码。,2018年7月5日,88,7 数据压缩,数据压缩的必要性(1)存储这些文件的外存空间也要很大,增加了相应的成本。(2)传输这些文件所需要的带宽也要很宽,否则,数据就不能在限定的时间内传输完毕。,2018年7月5日,89,7.1 为什么数据可以压缩,数据压缩是对数据进行再一次编码的过程。使用专门的压缩算法用较少的代码量表示相同的信息。有两个基本的原因。最基本的原因是原有的文件中存在冗余。另一个原因是人的感觉的特征。压缩比

38、衡量压缩编码效果的一个主要指标压缩比等于原有数据的字节数和压缩后数据的字节数的比值。,2018年7月5日,90,7.2 压缩编码的分类,无损压缩编码Lossless Compression Coding可逆压缩WinRAR、WinZip可执行文件、文本文件压缩比2:1 到5:1有损压缩Loss Compression Coding不可逆压缩主要用于音频、图像、视频文件压缩压缩比 10或者更大,2018年7月5日,91,7.3 压缩编码算法,行程长度编码(Run Length Encoding),也称为游程长度编码 行程(Run)是指数据中重复连续出现的字符。行程长度编码就是要发现这些重复连续出

39、现的字符,统计重复出现的次数,并把这些重复出现的字符,用“出现次数+字符”来进行编码。从而减少编码后的数据量。,2018年7月5日,92,例子,图所示为9696的字符点阵。图中的每一个小格是4bit4bit。直接存储这个点阵需要1152个字节。采用行程长度编码,对于图中第1行到第4行(实际是第1行到第16行)的编码如下:第1行(第1行第4行):10白,1黑,13白第2行(第5行第8行):10白,3黑,11白第3行(第9行第12行):10白,2黑,6白,2黑,4白第4行(第13行第16行):2白,19黑,3白若每个数字用1字节编码,一种颜色也用1字节编码。这16行编码后的数据量是:1424 =

40、112字节如果不采用压缩编码,这16行数据总共是:1216 = 192字节压缩比是192/112 = 1.71,2018年7月5日,93,7.3压缩编码算法,不等长编码等长编码:对于每一个单位数据,都用相同长度的二进制代码来进行编码。例如ASCII码根据实际字符时,它们出现的概率的不同,减少使用概率大的字符的编码长度,增加使用概率小的字符的编码长度。编码后总的数据量就可以减少。也就是实现了压缩编码。不等长编码方法可以有多种。其中最著名的是霍夫曼编码。,2018年7月5日,94,7.3压缩编码算法,替换编码,将原始数据中的一些符号串,用更简单的符号来替换的一种编码方法。可以用于文本文件的压缩,也可以用于图形文件的压缩。替换编码有许多不同的做法。有一种自适应编码可以根据原有的数据自动的产生符号串替换表。,2018年7月5日,95,The End,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报