版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《计算机导论——计算思维和应用技术》第2版计算机第5章
信息编码和逻辑运算5.1数值信息编码5.2非数值信息编码5.3压缩与纠错编码5.4逻辑运算与应用5.1.3二进制整数编码51.4二进制小数编码5.1.5二进制补码运算5.1.1二进制编码特征5.1.2不同数制的转换5.1.1二进制编码特征1、信息的二进制数表示信息编码=基本符号+组合规则。香农指出:最基本的信息符号是二值符号。香农提出:任何复杂信息都可以根据结构和内容,按一定编码规则,最终变换为一组“0”、“1”构成的二进制数据,并能无损地保留信息的含义。2、二进制编码的优点十进制编码:运算符号需要10个,加法有100个运算规则;二进制编码:运算符号只需要2个,加法只有4个运算规则。逻辑运算非常方便,可用1表示逻辑命题值“真”,用0表示逻辑命题值“假”。5.1.1二进制编码特征3、计算机中二进制编码的含义计算机并不能直接“理解”二进制符号的含义。二进制数据的具体含义取决于程序对它的解释。【例5-1】二进制数“01000010”在计算机中的含义是什么?如果它采用原码编码,则表示为十进制数+65;如果采用BCD编码,则表示为十进制数42;如果采用ASCII编码,则表示字符A;另外它还可能是图形数据,视频数据,指令的一部分,或者其他含义。5.1.1二进制编码特征4、任意进制数的表示方法任何进位制都能用有限个数字符号表示所有数。进制称为基数,如二进制的基数为2;不同数位上的数字有不同的位权。任意R进制数,可用公式(5-1)表示:N=An-1×Rn-1+An-2×Rn-2+…+A0×R0+A-1×R-1+…+A-m×R-m
(5-1)A为任意进制数,R为基数,n为整数的位数和权,m为小数的位数和权。【例】十进制数43.21按位权展开表示。43.21=4×101+3×100+2×10-1+1×10-2【例】二进制数1101.11按位权展开表示。[1101.11]2=1×23+1×22+0×21+1×2-0+1×2-1+1×2-25.1.1二进制编码特征5、二进制数运算规则基本符号:0、1;运算规则:逢二进一,借一当二。四则运算规则:(1)加法运算:0+0=0,0+1=1,1+0=1,1+1=10(有进位)(2)减法运算:0-0=0,1-0=1,1-1=0,0-1=1(有借位)(3)乘法运算:0×0=0,1×0=0,0×1=0,1×1=1(4)除法运算:0÷1=0,1÷1=1(除数不能为0)
101001015.1.1二进制编码特征【例5-3】二进制数的四则运算。5.1.1二进制编码特征6、十六进制数编码十六进制符号:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。运算规则:逢16进1,借1当16。计算机内部并不采用十六进制数进行运算;十六进制数是为了便于专业人员方便转换为二进制数。十六进制数用下标或在数字尾部加H表示。如:[18]16或18H;有时用前置“0x”表示十六进制数;如:0x000012A5表示十六进制数12A5。5.1.1二进制编码特征常用数制之间的关系如表所示。十进制数十六进制数二进制数BCD编码000000000011000100012200100010330011001144010001005501010101660110011077011101118810001000991001100110A10100001000011B10110001000112C11000001001013D11010001001114E11100001010015F1111000101015.1.2不同数制的转换1、二进制数与十进制数之间的转换表给出了2的整数次幂和十进制数值的对应关系。将二进制数各位的数乘以对应的权再累加起来。【例】将[1101.101]2按位权展开转换成十进制数。[1101.101]2=[23+22+20+2-1+2-3]10
=[8+4+1+0.5+0.125]10=[13.625]102n2827262524232221202-12-22-32-4十进制数值25612864321684210.50.250.1250.06255.1.2不同数制的转换2、十进制数与二进制数转换整数部分与小数部分分开转换;整数部分采用除2取余法;小数部分采用乘2取整法。【例】十进制18.8125转换为二进制数。整数除2取余,余数从低到高排列:18÷2=9余
0,9÷2=4余
1,4÷2=2余
0,2÷2=1余
0,1小于2不再除余
1;18=[10010]2;小数乘2取整,积的整数从高到低排列:0.8125×2=
1.625,0.625×2=
1.25,0.25×2=
0.5,0.50×2=
1.0;0.8125=[0.1101]2运算结果:[18.8125]10=[10010.1101]25.1.2不同数制的转换【例】十进制18.8125转换为二进制数的竖式计算。5.1.2不同数制的转换【例】十进制数100.345转换为二进制数的竖式计算。100.345D≈1100100.01011B1.3800.34520.69022
0.7602
1.5202
10025022521226232100010011
1.040余数达到精度要求后不再乘小数部分整数部分5.1.2不同数制的转换3、二进制数与十六进制数转换整数自右向左4位一组,不足4位时,在整数前面加0补足4位;小数自左向右4位一组,不足4位时,在小数后面加0补足4位;然后每4位二进制数对应1位十六进制数,即可得到十六进制数。【例】将二进制数111101.010111转换为十六进制数。[111101.010111]2=[00111101.01011100]2=[3D.5C]1600111101•010111003D•5C5.1.2不同数制的转换4、十六进制数与二进制数转换以小数点为界,1位十六进制数对应4位二进制数。【例】:将十六进制数4B.61转换为二进制数。[4B.61]16=[01001011.01100001]24B•6101001011•01100001如何用计算器转换二进制小数?5.1.2不同数制的转换5、BCD编码数制转换存在的问题:需要进行乘法和除法运算,计算速度不快;需要进行浮点运算,存储和计算较为复杂,计算效率低。BCD码是一种二—十进制编码;BCD码用4位二进制数表示1位十进制数。8421码是最常用的BCD编码,它各位的权值为:8、4、2、1;BCD码只选用了4位二进制编码中前10组代码。BCD码不使用1010~1111六组编码;编码到1001后就产生进位。5.1.2不同数制的转换BCD编码与十进制数的对应关系如图5-4所示。【例】将十进制数10.89转换为BCD码。10.89=[00010000.10001001]BCD【例】将BCD码[01110110.10000001]BCD转换为十进制数。[01110110.10000001]BCD=76.81十进制数012345678910BCD编码000000010010001101000101011001111000100100010000十进制数10•89BCD码00010000•10001001BCD码01110110•10000001十进制数76•815.1.2不同数制的转换常用数制之间的转换方法如图所示。5.1.3二进制整数编码1、无符号二进制整数编码形式运算结果超出数据表示范围称为“溢出”。如,8位无符号数运算结果大于255时,就会产生“溢出”。【例】[11001000]2+[01000001]=100001001(最高位1溢出)编码字节越长,数值表示范围越大,越不容易导致“溢出”问题。“以空间换时间”的计算思维方式:如果小数值用1字节存储,大数值用多字节存储,这种变长存储会使计算复杂化,因为需要增加定义数据长度位;计算时需要对每个数据进行长度判断。因此,程序设计时先要定义数据类型,同一类型数据采用统一存储长度。这样虽然会浪费一些存储空间,但提高了运算速度。5.1.3二进制整数编码【例】不同存储长度时,无符号十进制数[86]10的编码形式。1字节存储:01010110
2字节存储:0000000001010110
4字节存储:000000000000000000000000010101105.1.3二进制整数编码2、带符号二进制整数编码形式计算机用最高位作为符号位,0表示正数,1表示负数,其余位表示数值大小。符号化的二进制数称为机器数或原码;没有符号化的数称为真值。机器数长度固定(如8、16、32、64位)。当二进制数位数不够时,整数在最高位前用0补足,小数在最低位后用0补足。【案例】二进制数+1011真值与机器数区别如下。真值8位机器数(原码)16位机器数(原码)+101110001011100000000000101115.1.4二进制小数编码1、定点数编码方法定点数:小数点位置固定不变的数。定点数有定点整数和定点小数。增加存储长度可以提高小数的精度。【例】将二进制数-0.1001001用2个字节存储为定点小数。定点整数和定点小数:(注意:计算机极少使用定点小数)11001001
00000000SS符号位小数点小数点符号位5.1.4二进制小数编码2、浮点数的表示小数点位置变化的数称为浮点数。浮点数指数表示:指数称为“阶码”,小数称为“尾数”。二进制数的阶码和尾数都用二进制数表示。【例】[1001.011]2=[0.1001011]2
2100【例】[-0.0010101]2=[-0.10101]2
2-105.1.4二进制小数编码任意二进制浮点数公式:N=±M×2±E
(5-2)式中,M为尾数(纯小数部分),整数E为阶码,M与E都带符号。【例】-1101B=-0.1101B×24
阶码小数点尾数二进制浮点数特征:尾数的位数决定数的精度;阶码的位数决定数的范围。阶符阶码E尾符S尾数M
(定点整数)
(定点小数)注意:计算机不使用这种浮点数存储格式,这里仅仅是为了说明浮点数原理。5.1.4二进制小数编码3.二进制小数的截断误差(1)浮点数存储空间不够引起的截断误差截断误差(舍入误差):
二进制浮点数存储时,如果尾数存储空间不够,会导致部分小数丢失。
可以使用较长的尾数域,减少截断误差。【例】二进制数10.101存储为8位浮点数时,将引起截断误差。010010101(最后一位丢失)5.1.4二进制小数编码(2)数值转换引起的截断误差截断误差的另外一个来源是无穷展开式。二进制中,有无穷展开式的数值多于十进制数。十进制小数转换成二进制时,不能保证精确转换;二进制小数转换成十进制,也遇到同样的问题。【例】十进制数0.8转换为二进制时为:0.11001100......【例】十进制数1/10转换为二进制数时,也会遇到无穷展开式问题。十—二进制小数转换时,可根据精度要求取近似值,或采用0舍1入规则。5.1.4二进制小数编码(3)浮点数的相加顺序一个大数加上一个小数,那么小数可能被截断。多个数值相加的原则是先相加小数字,避免产生截断误差。大多数商用软件提供的计算精度已经足够了。特殊应用领域(如导航系统),小误差可能在运算中累加,产生严重后果。【例5-26】1.01365=37.8,1.02365=1377.4;0.99365=0.026;0.98365=0.0006。每天多0.01的努力,一年后会有很大的收获。5.1.4二进制小数编码4、规格化浮点数的表示与存储计算机中的实数采用浮点数存储和运算。浮点数并不完全按公式5-2进行表示和存储。如表5-4所示,计算机中的浮点数严格遵循IEEE754标准。浮点数规格码长(bit)S符号(bit)e阶码(bit)M尾数(bit)十进制数有效位单精度(float)3218236~7双精度(double)641115215~16扩展双精度数1801156420扩展双精度数2128115112345.1.4二进制小数编码(1)IEEE规格化浮点数IEEE规格化浮点数规定:小数点左侧整数必须为1(如1.xxxxxxxx)。【例5-27】1.75D=1.11B。规格化浮点数表示为:1.75D=1.11B=1.11×20IEEE754规格化浮点数特征:整数部分恒为1,这在存储尾数M时,可以省略小数点和整数1,从而用23位尾数表达了24位尾数;尾数最高位固定为1后,尾数能以最大数的形式出现,即使遭遇截断误差的操作,仍然可以保持尽可能高的精度。5.1.4二进制小数编码(3)浮点数的阶码IEEE754标准没有定义指数E的符号位。二进制数规格化后,纯小数部分的指数必为负数,这给运算带来了复杂性。IEEE规定指数部分用阶码e表示,阶码e采用移码形式存储。阶码e的移码值=原始指数E+偏移值【32位浮点数的偏移值为127;64位浮点数的偏移值为1023】经过移码变换后,阶码e变成了正数,可以用无符号数存储。阶码e的表示范围是1~254,阶码0和255有特殊用途。5.1.4二进制小数编码(4)IEEE浮点数的存储形式IEEE754浮点数存储格式如图5-14所示。IEEE754编码方法:省略整数位的1、小数点、乘号、基数2;符号位S(1位,0表示正数,1表示负数);阶码位e(余127码或余1023码);尾数位M(规格化小数部分,长度不够时从最低位开始补0)。5.1.4二进制小数编码实数转换为IEEE754浮点数步骤:将实数转换为二进制数→在S中存储符号值→将二进制数规格化→计算出移码e和尾数M→最后连接[S-e-M]即可。【例5-28】将十进制实数26.0转换为32位IEEE754规格化二进制浮点数。5.1.4二进制小数编码【例5-29】将浮点数11000001110010010000000000000000转换成十进制数。步骤1:浮点数分割成三部分:1
10000011
10010010000000000000000,
可得:符号位S=1;阶码e=10000011;尾数M=10010010000000000000000。步骤2:还原原始指数E:E=e-127=10000011-01111111=100=4。步骤3:还原尾数M为规格化形式:M=1.1001001×24(“1.”从隐含位而来)。步骤4:还原为非规格化形式:N=S1.1001001×24=S11001.001(S=符号位)。步骤5:还原为十进制数形式:N=S11001.001=-25.125(S=1,说明是负数)。5.1.4二进制小数编码【例】将实数176.0625转换为IEEE754规格化浮点数。(1)176.0625转换为二进制为:10110000.0001(2)小数点左边隐含一位1,10110000.0001=1.01100000001*2^7(小数点向左偏移7位);(3)单精度指数偏移量为127,所以指数偏移量为7+127=134,即:10000110;(4)单精度尾数长度为23,所以尾数为:01100000001000000000000;(5)176.0625>0,即为正数,所以符号位为0;(6)由上得出:176.0625使用IEEE754规格化后为:
0
10000110
01100000001000000000000
5.1.5二进制补码运算1、原码在二进制数运算中存在的问题原码运算的复杂性:做x+y运算时,要判别两个数的符号,增加了运算时间。原码会出现:[00000000]2=[+0]10,[10000000]2=[-0]10的“正0负0”问题。符号位会对运算结果产生影响,导致运算出错。【例】[01000010]2+[01000001]2=[10000011]2(进位导致的错误)【例】[00000010]2+[10000001]2=[10000011]2(符号位相加导致的错误)在只考虑数有效位的情况下,两个互为补码的数相加,结果有效位为0时,称这两个数互补。例如,10的补码有:(1,9)、(2,8)、(3,7)、(4,6)、(5,5)。二进制数的补码可以带符号运算,而运算结果不会产生错误;计算机中的数值广泛采用补码的形式进行存储和计算。5.1.5二进制补码运算2、二进制数的反码编码方法引入反码是补码运算的需要。二进制正数的反码与原码相同;负数的反码是对该数的原码除符号位外各位取反。【例】二进制数字长为8位时,[+5]10=[00000101]原=[00000101]反【例】二进制数字长为8位时,[-5]10=[10000101]原=[11111010]反5.1.5二进制补码运算3、补码运算的概念两个数相加,计算结果的有效位(即不包含进位)为0时,称这两个数互补。如10以内的补码对有:1-9、2-8、3-7、4-6、5-5;100以内的补码对有:1-99、2-98、…50-50等。十进制数中,正数x的补码为正数本身[x]补,负数的补码为[y]补=[模-|y|]补。如图5-16所示(顺时针方向为+,逆时针方向为-)。5.1.5二进制补码运算4、二进制数的补码编码方法正数的补码=原码。负数的补码=原码取反+1。原码、反码和补码,符号位都不变。【例】[10]10的原码为:[10]10=[00001010]原[-10]10的原码为:[-10]10=[10001010]原【例】[10]10的反码为:[10]10=[00001010]反[-10]10的反码为:=[11110101]反【例】[10]10的补码为:[10]10=[00001010]补[-10]10的补码为:[-10]10=[11110110]补5.1.5二进制补码运算二进制数各种编码的表示方法如表所示。十进制数真值原码反码补码0000000000000000000000000000100000001111111100000000+1+1000000010000000100000001-1-1100000011111111011111111+15+1111000011110111000001110001-15-1111100011111111000011110001-127-1111111111111111000000010000001-128-10000000——100000005.1.5二进制补码运算5、补码的运算规则补码算法思想:把正数和负数都转换为补码形式,使减法变成加一个负数的形式,从而使正负数的加减运算转换为单纯的加法运算。补码运算结论:补码两数加法运算时,结果仍为补码。补码的符号位可以与数值位一同参与运算。运算结果如有进位,判断是否溢出;如果不是溢出,则将进位舍去不要。5.1.5二进制补码运算不论对正数和负数,补码都具有以下性质:
[A]补+[B]补=[A+B]补
(5-3)
[[A]补]补=[A]原
(5-4)式中,A、B为正整数、负整数、0均可。小数的情况,在以后课程讨论。【例】A=[-70]10,B=[-55]10,求A与B相加之和。(1)将A、B转换为补码;[-70]10=[-(64+4+2)]10=[11000110]原=[10111001]反+[00000001]=[10111010]补[-55]10=[-(32+16+4+2+1)]10=[10110111]原=[11001000]反+[00000001]=[11001001]补(2)进行补码加法运算;
10111010
+11001001进位1自然丢失→1100000115.1.5二进制补码运算(3)将运算结果(补码)进行求补运算(取反加1),得到原码。[10000011]补=[11111100]反+[00000001]=[11111101]原=[-125]10结论:补码加法运算不用考虑数值正负,直接进行补码加法即可。减法可以通过补码的加法运算实现。如果运算结果最高位为0,表示结果为正数;如果最高位为1,则结果为负数。《计算机导论——计算思维和应用技术》第2版计算机第5章
信息编码和逻辑运算5.1数值信息编码5.2非数值信息编码5.3压缩与纠错编码5.4逻辑运算与应用5.2.3统一字符编码5.2.4声音的数字化5.2.5图像的数字化5.2.1英文字符编码5.2.2中文字符编码5.2.1英文字符编码1、BCDIC编码早期计算机字符编码从霍尔瑞斯(HermanHollerith)卡片发展而来;霍尔瑞斯卡片在1890年的美国人口普查中使用。6位字符编码系统BCDIC(二进制与十进制交换编码)源自Hollerith码;1960年代逐步扩展为8位EBCDIC码;IBM大型计算机采用EBCDIC码标准。5.2.1英文字符编码2、ASCII编码(1)ASCII码编码规则ASCII(美国信息交换标准码)码用7位二进制数对1个字符进行编码;ASCII可以表示27=128个字符编码。计算机以1个字节存放1个ASCII码字符;ASCII码每个字节最高位为0;(2)ASCII码应用案例【例】“Hello”的ASCII编码。Hello01001000011001010110110001101100011011115.2.1英文字符编码(1)ASCII码编码规则5.2.1英文字符编码(3)ASCII码编码规律0~9字符码高4位编码为0011,低4位为0000~1001;去掉高4位时,低4位正好是0~9的二进制数。ASCII码26个字母编码是连续的;字母A~Z码值为65~90;字母a~z码值为97~122;大写字母第6位值为0,小写字母第6位值为1;它们之间的ASCII码值十进制形式相差32;ASCII编码定义了33个无法显示的控制码;ASCII控制码目前极少使用。5.2.1英文字符编码3、扩展ASCII码(ANSI码)ASCII码不能满足非英语国家的需要。如,无法表示英磅符号(£);如,无法显示重音符号(é);如,无法显示希腊语、希伯来语、阿拉伯语、俄语、汉语等。ASCII码只用了7位,很多国家就使用128~255的码字来表示其他符号。1981年PC机推出时,就固化了一个256个符号的字符集。当PC机在美国之外销售时,这些扩展的ASCII码就完全乱套了。5.2.1英文字符编码ANSI(美国国家标准学会)标准结束了这种混乱。ANSI标准:低128个码字采用标准ASCII编码;高128个码字根据语言不同,采用“码页”处理方式。如,IBM字符集码页为437;如,以色列码页是862;Windows国际版有很多这样的码页,涵盖了各种语言。5.2.1英文字符编码【扩展】ANSI扩展ASCII码。5.2.1英文字符编码【扩展】莫尔斯电报码(MorseCode)。5.2.1英文字符编码【扩展】布莱叶盲文编码(BrailleCode)。5.2.2中文字符编码1、双字节字符集(DBCS)亚洲国家常用文字符号大约2万多个。8位编码不能满足需要,解决方案是采用DBCS(双字节字符集)编码。DBCS用2个字节定义1个字符,当2个字节编码值低于128时为ASCII码,编码值高于128时,为所在国家定义的编码。【例】汉字早期采用双字节编码,字节最高位为0表示标准ASCII码;字节最高位为1时,用2个字节表示一个汉字。即有的字符用1个字节表示(如英文),有的字符用2个字节表示(如汉字)。5.2.2中文字符编码双字节编码换存在以下问题:(1)程序中处理字符串时,指针移动可能会导致错误;(2)字符串存储时,需要计算字符串的长度;(3)丢失双字节字符的高位字节后,会产生“乱码”现象;(4)在存储和传输中,是高字节在前,还是低字节在前?5.2.2中文字符编码2、汉字编码(1)GB2312-80字符集汉字编码1981年,《信息交换用汉字编码字符集·基本集》(GB2312-80)标准颁布。GB2312-80标准规定:1个汉字用2个字节表示;每个字节只使用低7位,最高位为0;共收录6763个简体汉字、682个符号;一级汉字3755个,以拼音排序;二级汉字3008个,以偏旁排序。【例】“啊”字的国标码为:001100000010000130H21H5.2.2中文字符编码【案例】GB2312-80字符集和区位码、国标码、内码。符号区一级字库二级字库编码5.2.2中文字符编码(2)内码国标码最高位为0,与ASCII码无法区分;因此,早期计算机内部,汉字编码全部采用内码表示。早期内码是将国标码两个字节的最高位设定为1,保持中英文的兼容性。【例】“啊”字的内码为:操作系统内部编码,早期DOS系统采用ASCII码;目前操作系统内部基本都采用Unicode字符集编码,字节高位0、1兼有。1011000010100001B0HA1H5.2.2中文字符编码(3)编码转换部分编程语言提供了编码转换函数。【例】用PHP语言编码转换函数,求字符串“中国”的GB2312-80内码。<?phpechourlencode("中国");
//输出编码为:%D6%D0%B9%FA,%为分隔符//?>(4)BIG5字符集汉字编码台湾、香港地区普遍使用BIG5繁体汉字编码标准;BIG5包括440个符号,13060个汉字。5.2.2中文字符编码3、点阵字体编码ASCII、GB2312-80等解决了信息的存储,传输,计算、处理等问题;字符的显示和打印输出时,需要另外对字形编码。、通常,将所有字形编码的集合称为字库。计算机中有几十种中英文字库。字形编码有点阵字形和矢量字形两种类型。汉字输入键盘输入汉字信息
(输入码)机内码字形码显示/打印输出汉字输出国标码5.2.2中文字符编码点阵字形是将每个字符分成16×16(或其他分辨率)的点阵图像,然后用图像点的有无(一般为黑白)表示字形的轮廓。缺点:不能放大,放大后字符边缘会出现锯齿现象。5.2.2中文字符编码4、矢量字体编码矢量字形保存每个字符的数学描述信息。如,笔划的起始、终止坐标,半径、弧度等。显示和打印矢量字形时,要经过一系列的运算才能输出结果。矢量字形可以无限放大,笔划轮廓仍然保持圆滑。Windows中绝大部分为矢量字形,只有很小的字符采用点阵字形。【例】Windows中,矢量字符由数学方程和参数点组成。5.2.2中文字符编码矢量字形=计算公式+字形参数计算公式:描述函数、直线方程、B样条(Bezier曲线)拟合公式等字形参数:基点、基线、锚点、控制点、宽度、角度、颜色等矢量字符显示:查找字符取出参数计算字形显示字符5.2.2中文字符编码【例】Windows中矢量字形与点阵字形。5.2.3国际字符编码1、国际通用字符集(1)Unicode(统一码)字符集Unicode是一种国际通用字符编码标准。Unicode目标:收录世界上所有语言的文字和符号;对每个字符定义一个值(码点);码点可用2字节表示(UCS-2),也可用4字节表示(UCS-4)。Unicode字符名称=代码点值前面加上“U+”。如,字符“A”的名称是“U+0041”。Unicode和UCS获得了网络、操作系统、编程语言等广泛支持。如,WindowsNT/2000/XP/7/8、Linux等。5.2.3国际字符编码【扩展】字符集编码图。5.2.3国际字符编码2、Unicode字符的存储和传输问题(1)“大端”与“小端”字节序在《格列佛游记》中,小人国的内战源于吃鸡蛋时是究竟从大端敲开还是从小端敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。5.2.3国际字符编码字符编码在存储和传输中,同样遇到了“大端”与“小端”的问题。如,“汉”字Unicode编码是U+6C49,写入文件时,将“6C”存储在起始地址就是大端字节序(BE,起始地址存高位字节);将“49”存储在起始地址就是小端字节序(LE,起始地址存低位字节)。x86计算机中,数据存储和传输采用“小端”字节序;TCP/IP协议、Java语言、苹果计
算机采用“大端”字节序。起始地址低位字节高位地址5.2.3国际字符编码【扩展】网络字节序。TCP/IP网络协议中,所有二进制整数在网络传输中采用“大端字节序”,因此又称为“网络字节序”。【例】4个字节的32bit值(0x12345678),在网络中的传输次序是:首先0~7bit,其次8~15bit,然后16~23bit,最后24~31bit。这种传输次序称为“网络字节序”(大端字节序)。如果程序只在单机环境下运行,并且不和其他程序打交道,那么可以忽略字节序的存在。唯有在跨平台以及网络程序设计中,才考虑字节序问题。123456785.2.3国际字符编码【例】字符串“Hello”在Unicode编码中;大端字节序是:U+0048U+0065U+006CU+006CU+006F小端字节序为:U+4800U+6500U+6C00U+6C00U+6F00小端字节序5.2.3国际字符编码(2)UBOM存储模式计算机在不清楚“大端”或“小端”的情况下,如何进行数据解析呢?解决办法:在每个Unicode字符串的最前面;用“FEFF”表示大端字节序(BE);用“FFFE”表示小端字节序(LE);“FEFF”是不存在的字符编码,不会出现编码冲突问题。5.2.3国际字符编码3、UTF-16编码
(1)UTF-16编码方法
UTF-16编码的前身是UCS2编码。UCS-2编码固定2个字节表示一个字符,一共可表示216=65535个字符。Unicode4.0标准定义了一组附加字符编码,附加字符用4个字节表示,Unicode4.0定义了45960个附加字符。UTF-16编码=UCS-2字符集+附加字符UTF-16编码可用2个字节表示,也可用4个字节表示。目前UTF-16的码点范围是:U+0000~U+10FFFF,大概有111万编码。UTF-16编码主要用于Windows2000/XP/7/8操作系统。5.2.3国际字符编码(2)UTF-16编码案例【例】“中国”字符的各个版本UTF-16编码如表所示。编码标准“中国”字符的编码序列说明UTF-16BE4E2D56FD大端字节序编码UTF-16LE2D4EFD56小端字节序编码UTF-16(BOM,BE)FEFF4E2D56FD字节序标示符+大端编码UTF-16(BOM,LE)FFFE2D4EFD56字节序标示符+小端编码5.2.3国际字符编码【扩展】字符的Unicode编码。5.2.3国际字符编码【扩展】Unicode编码图5.2.3国际字符编码4、UTF-8编码(1)UCS-2编码对存储空间的浪费UCS-2编码需要在ACSII码前加一个0字节码;这样,英文系统就会出现大量为0的字节。美国程序员无法忍受这种存储空间翻倍;传输时间翻倍的浪费;这些程序员选择忽略Unicode字符集,这让事情变得更加糟糕。解决的方法是采用UTF-8编码。容量与效率的矛盾:编码时用几个字节表示一个字符,用的字节越多,编码空间越大,即容量越大。表示一个字符用的字节越多,存储空间就越大,存储或检索的效率降低了。平衡这一对矛盾的方法是采用变长编码方案,因此编码也由简单变得复杂了。5.2.3国际字符编码(2)UTF-8编码方法UTF-8设计思想:
不修改那些没有坏或不够好的东西,只修改出问题的部分。UTF-8编码方法:0~127之间的码字使用1个字节存储;超过128的码字使用2~4个字节存储。UTF-8编码的长度是可变的。ASCII码与UTF-8码完全一致,解决了美国程序员的烦恼。【例】字符“中”的编码。UTF-8码占3个字节,编码为“E4B8AD”;UTF-16编码为“4E2D”,2个字节;GBK编码为“D6D0”,2个字节。5.2.3国际字符编码(3)UTF-8编码的优点对欧洲字符只要较少的存储空间;兼容ASCII码,容易从ASCII码向UTF-8迁移;与字节顺序无关,可以在不同平台之间交流;容错能力高,不会产生连锁错误(如乱码)。类UNIX系统普遍采用UTF-8字符集;如,Linux系统默认的字符编码是UTF-8;如,HTML和大多数浏览器也支持UTF-8。5.2.3国际字符编码【扩展】各种不同语言文字中,字符“你好”的编码。语言文种编码标准字符集大小文字样例“你好”简体中文GB2312-806763你好、中国汉语繁体中文BIG-513053你好、中國漢語藏文Unicode592(扎西德勒)日文SJIS6524こんにちは(空宁尼其哇)韩文KSC56017238안녕하세요(啊宁哈塞优)英文ASCII128Howareyou俄文Windows1251256Привет(的比哦捏特)阿拉伯文Unicode193السلامعليكم(埃瑟兰姆-啊累依库姆)5.2.4声音的数字化声音、图形、视频等信息,需要转换成二进制数后计算机才能存储和处理。将模拟信号转换成二进制数的过程称为数字化处理。1、声音的数字化过程自然声音是连续变化的模拟量。如,对着话筒讲话时,话筒根据周围空气压力的变化,输出连续变化的电压值。模拟音频信号地数字化过程如图5-30所示。5.2.4声音的数字化【扩展】故障声音的频率。次声波人耳可听域超声波<20Hz20~20,000Hz>20,000Hz女性语音150Hz~9,000Hz电话语音200Hz~3,400Hz调幅广播(AM)50Hz~7,000Hz调频广播(FM)20Hz~15,000Hz高级音响10Hz~40,000Hz男性语音100Hz~8,000Hz声源种类频带宽度5.2.4声音的数字化(1)采样模拟信号转换成数字信号必须经过采样过程。采样:在固定时间间隔内,对模拟音频信号截取振幅值。单位时间内采样次数(采样频率)越多,数字信号就越接近原声。奈奎斯特采样定理:
采样频率达到信号最高频率的2倍时,可以无失真地恢复原信号。人耳听力范围在20Hz~20kHz之间。采样频率达到:20kHz×2=40kHz,就可以满足采样要求。目前声卡采样频率达到了44.1kHz或更高。5.2.4声音的数字化【案】音频信号的采样与量化处理。采样频率5.2.4声音的数字化(2)量化量化:将信号连续取值为有限多个离散值。量化精度一般用二进制数衡量。如声卡量化位数为16位,有216=65535种量化等级。声卡大多为24位或32位量化精度。(3)编码将采集的原始数据,按文件类型(如WAV、MP3等)编码;再加上音频文件的头部,就得到了一个数字音频文件。编码工作由声卡和音频处理软件(如AdobeAudition)共同完成。5.2.4声音的数字化【扩展】模拟电视信号的数字化。5.2.4声音的数字化2、声音信号的输入与输出数字音频信号可通过网络、光盘、数字话筒、MIDI接口等输入计算机。模拟音频信号输入计算机后,由声卡转换为数字信号;这一过程称为“模/数转换”(A/D)。播放音频
播放软件
音频解压缩
音频芯片
,
模拟音频信号这一过程称为“数/模转换”(D/A)。5.2.4声音的数字化【扩展】个人音乐工作站。5.2.4声音的数字化【扩展】个人音乐工作室组成。5.2.5图像的数字化1、图像的数字化数字图像(Image)可由数码相机、数码摄像机、扫描仪等设备获取。数字图像也可以直接在计算机中自动或人工设计生成。5.2.5图像的数字化2、图像的编码(1)二值图编码二值图:只有黑、白两色的图。图像离散化:设置取样分辨率(采样);对图像中每个像素用1位二进数表示。图像分辨率(采样精度)指单位长度内包含像素点的数量;分辨率单位:dpi(点/英寸)等。图像分辨率越高,图像质量越好,文件占用存储空间越大。5.2.5图像的数字化【扩展】图像像素与尺寸5.2.5图像的数字化(2)灰度图像的编码灰度图将白色与黑色之间的过度灰色按对数关系分为若干亮度等级。一般亮度分为0~255个等级(量化精度);人眼对图像亮度的识别小于64个等级。图像中每个像素点的亮度值用1个字节表示。5.2.5图像的数字化(3)彩色图像的编码显示器的任何色彩都可以用红绿蓝(RGB)三个基色按不同比例混合得到。5.2.5图像的数字化图像中每个像素点用3个字节进行编码。每个颜色用1个字节表示,亮度范围为0~255个等级。一个像素点的色彩范围为:224=1670万种色彩。像素点用多少位二进制数表示,称为色彩深度(量化精度)。5.2.5图像的数字化【案例】彩色图像的RGB模式。RGB彩色图像R
G
BRG
BR数组—8bit表示(256级色阶)G数组—8bit表示(256级色阶)B数组—8bit表示(256级色阶)最大色彩数:28×28×28=224=16777216(16.7M)5.2.5图像的数字化3、点阵图像的特点点阵图像由多个像素点组成。点阵图像放大时,像素点会使线条和形状显得参差不齐。5.2.5图像的数字化4、矢量图形的编码矢量图形(Graphic)用直线或曲线描述图形。矢量图形采用特征点和计算公式对图形进行表示和存储。显示或打印矢量图形时,要经过一系列的数学运算才能输出图形。矢量图形的的优点是无论进行放大、缩小或旋转等操作,图形都不会失真。矢量图形可以只修改其中某一个物体,而不会影响图中其他物体。5.2.5图像的数字化【扩展】图形的点阵表达和矢量表达形式。5.2.5图像的数字化【例】矢量图形和点阵图形放大时的对比。5.2.5图像的数字化矢量图形缺点:难以表现色彩层次丰富的图像效果;无法使用廉价设备将图形输入到计算机中并矢量化;目前没有统一的标准格式;在不同软件中进行交换困难。主要应用:线框型图片,工程制图,二维动画设计,三维物体造型等。矢量图形软件:如,Visio、AutoCAD、FlashCS、3DMAX等。矢量图形可以转换为点阵图像;点阵图像转换为矢量图形时效果很差。5.2.5图像的数字化【例】分形矢量图形。5.2.5图像的数字化【例】Visio矢量图形。5.2.5图像的数字化【例】AutoCAD矢量图形。5.2.5图像的数字化【例】3DMAX矢量图形。《计算机导论——计算思维和应用技术》第2版计算机第5章
信息编码和逻辑运算5.1数值信息编码5.2非数值信息编码5.3
压缩与纠错编码5.4
逻辑运算与应用5.3.3有损压缩技术5.3.4信号纠错编码5.3.1信息量的度量5.3.2无损压缩编码5.3.1信息量的度量1、熵的概念和熵递增原理熵在物理学上指热能除以温度所得的商。热熵是表达分子状态杂乱程度的一个物理量。热力学指出:对任何已知孤立的物理系统,热熵只能增加,不能减少。信息熵:信息熵只会减少,不会增加。热熵和信息熵互为负量。已证明:任何系统要获得信息必须要增加热熵来补偿。熵递增原理:在孤立系统中,熵处于最小值时,系统处于最有序状态。但熵会自发性地趋于极大,随着熵的增加,有序状态会逐步变为无序状态,并且不可能自发地产生新的有序结构。5.4.1信息量的度量2、信息的定义信息是什么?维纳认为:“信息就是信息,既非物质,也非能量”。香农从计算的角度研究信息的量化。香农信息论特点:
只考虑信息符号本身出现的概率,与信息内容无关。
信息量的大小与它的不确定性有直接关系。香农“信息熵”的概念解决了对信息的度量问题。5.3.1信息量的度量
5.3.1信息量的度量(1)等概率事件对信息熵计算的简化每个事件发生的概率相等时,信息熵的计算可以简化。【例5-59】π是一个无限循环小数,如果希望π值的精度是十进制数的30位,那么最少需要多少位二进制数(信息熵)表示才能满足精度要求。假设π值中每个数字符号出现的概率相同(等概率事件),根据对数换底公式:log2(0)log10(10)/log10(2)=1/0.30103=3.3219;log2(2)=log10(2)/log10(2)=1;一位十进制数转换为二进制数需要的二进制符号位(信息熵)为:k=-log2(10)/-log2(2)=3.3219/1=3.3219≈3.4bit(余量稍留大一点)由以上计算可知,每位十进制数转换为二进制数时,信息熵大约需为3.4bit。30位十进制数π值转换成二进制数时,最少需要:30位×3.4bit=102(bit)。5.3.1信息量的度量(2)事件发生概率不同的信息熵计算信息熵可以理解为不确定性。【例】假设足球世界杯决赛是巴西和美国,根据经验,巴西夺冠概率是80%,美国夺冠概率是20%,根据信息熵公式,猜测谁能获得冠军需要的信息量为:H(X)=-(0.8*log20.8+0.2*log20.2)=-(0.8*(-0.3219)+0.2*(-2.3219))
=0.257+0.464=0.721bit巴西夺冠概率越高,信息熵越小。如果巴西100%夺冠,则信息熵=0,相当于没有任何信息。两队夺冠概率都是50%时最难判断,因为信息熵达到了最大值。越是确定的事件,不确定性越小,信息量也越少。5.3.1信息量的度量4、最大信息熵原理杰尼斯最大熵原理:
对随机事件预测时,预测应满足全部已知条件,而且对未知事物不做任何主观假设,没有任何偏见。数学家希萨证明:
对任何一组不自相矛盾的信息,最大熵模型不仅存在,而且唯一。【例】假如输入的拼音是“wang-xiao-bo”,最可能的文字是“王小波”和“王晓波”,如何唯一确定呢?根据最大熵原理,如果通篇文章是介绍文学,作家王小波的可能性就较大;而文章是讨论两岸关系时,台湾学者王晓波的可能性会较大。5.3.2无损压缩编码1、无损压缩的特征压缩比=压缩前数据的长度:压缩后数据的长度无损压缩的原理:相同的信息只需要保存一次。例如,一幅蓝天白云的图像压缩时,首先确定图像中哪些区域是相同的,哪些是不同的。重复的图像数据只需要记录区域的起始点和终止点。无损压缩的优点:可以完全恢复原始数据,不引起任何数据失真。无损压缩一般可将文件压缩到原来的1/2~1/4。5.3.2无损压缩编码【扩展】数据的空间冗余,如图像中一部分色块中颜色相同。5.3.2无损压缩编码【扩展】数据的时间冗余,如视频中相邻两画面数据相同。5.3.2无损压缩编码【扩展】数据的结构冗余,如服装纹理在某些区域有冗余。5.3.2无损压缩编码【扩展】数据的知识冗余,如激烈运动的视频,画面总有些模糊。5.3.2无损压缩编码2、常用压缩编码方法常用压缩编码算法如图所示。字典模型:与数据排列次序有关,与数据出现频率无关;统计模型:与数据排列次序无关,与数据出现频率有关。5.3.2无损压缩编码3、RLE压缩编码原理RLE(行程长度编码)对重复数据用重复次数和单个数据值代替。重复次数称为“游程”。RLE是一种变长编码;RLE编码方法:【例】对字符串“AAAAABACCCCBCCC”采用RLE编码后为:
@5ABA@4CB@3CRLE编码简单直观,编码和解码速度快,但是压缩效率非常低。应用:BMP、TIF、AVI等文件,Winzip、WinRAR等压缩软件。标记字节字符重复次数字符5.3.2无损压缩编码4、霍夫曼压缩编码原理霍夫曼算法:频繁使用的字符用较短的编码代替,较少使用的字符用较长的编码代替,每个字符的编码各不相同,编码长度可变。霍夫曼编码广泛用于数据压缩、数据通信、多媒体技术等各个领域。霍夫曼编码算法步骤:(1)按符号出现概率由大到小排列;(2)将概率小的两个符号组成一个节点;(3)将相邻概率相加,形成一个新概率;(4)重复步骤2、3,直到概率和为1,形成“霍夫曼树”。(5)代码从根节点开始向上分配。代码左边标1或0无关紧要。5.3.2无损压缩编码【例】对字符串“Iamateacher”进行霍夫曼编码。字符串为:X={空格,a,e,I,m,t,c,h,r}(按字符出现概率大小排列)。字符概率为:p={0.22,0.22,0.14,0.07,0.07,0.07,0.07,0.07,0.07}。霍夫曼编码过程如图5-44所示。5.3.2无损压缩编码【例】霍夫曼编码与ASCII编码的比较如图所示。文本I
am
a
teacher霍夫曼码110101001100010001101111100101010011111000ASCII码4920616D206120746561636865725.3.2无损压缩编码【例】在一篇只含有“a、b、c、d、e、f”字符的文本中,每个字符依次出现的次数为45、13、12、16、9、5,试进行霍夫曼编码。5.3.2无损压缩编码5、字典压缩编码原理字典编码算法:
将数据在文件中出现的频率,组合成字典列表,并用代码表示这个单词。日常生活的字典压缩方法如,奥运会=奥林匹克运动会如,PC=个人计算机编码方法:(1)查找字符是否在前面出现过,如果是,则用指针指向出现过的字符串,替代重复出现的字符串(如LZ77算法)。(2)创建短语词典,编码过程中,遇到词典中出现的短语时,就输出词典中短语的索引号,而不是短语本身(如LZ78、LZW算法)。5.3.2无损压缩编码【例】编码信息为:goodgoodstudy,daydayup。LZW算法编码方法:(1)建立字典。1=g,2=o,2=d,3=s,4=t,5=u,6=y,7=a,8=p,9=空格,10=逗号,11=句号。(2)字母编码。扫描文本,到第1个空格处分词,第1个单词编码为:good=1223。
压缩文件编码为:12239。(3)新单词编码。1223添加到字典,成为新条目,索引号=61。(4)扫描第2个单词,查字典得第2个单词索引号=61。
压缩文件编码为:12239619。(5)扫描第3个单词,查阅字典,没有单词的索引号,将单词study=34526添加到字典,成为一个新条目,索引号=62。
压缩文件编码为:122396193452610。(6)原始信息压缩的最终编码如图所示。文本good
good
study,day
day
up。编码122396193452610276962958115.3.3有损压缩技术1、有损压缩的特征有损压缩文件重构时,重构后的数据与原始数据不完全一致。有损压缩是一种不可逆的压缩方式。图像、视频、音频一般采用有损压缩。图像、视频、音频数据的压缩比高达10:1~50:1。有损压缩算法思想:
通过有意丢弃一些对视听效果相对不太重要的细节数据进行信息压缩。5.3.3有损压缩技术2、JPEG图像压缩标准ISO和ITU提出了“多灰度静止图像的数字压缩编码”(JPEG标准)。JPEG标准包含两部分:第一部分是无损压缩,采用差分脉冲编码调制(DPCM)的预测编码;第二部分是有损压缩,采用离散余弦变换(DCT)和霍夫曼编码。JPEG算法思想:恢复图像时不重建原始画面,而是生成与原始画面类似的图像,丢掉那些没有被注意到的颜色。JPEG非常适合真实图像的压缩。对于非真实图像(如线条图、卡通图像等),JPEG压缩效果并不理想。JPEG对图像的压缩比为一般为10:1~25:1。5.3.3有损压缩技术3、JPEG图像编码原理JPEG编码过程非常复杂。图像压缩DCT编码:将图像RGB色彩空间转换为YUV色彩空间;重新采样,并分解为8×8大小的数据块;在8×8图像块中,Y数据不变,U和V取平均值;对直流系数用差分脉冲编码调制(DPCM)进行编码;对交流系数用RLE进行编码。图像解压缩:对DCT系数解码,然后求逆量化;将DCT系数转化为8×8样本图像块;将完成后的块组合成图像。5.3.3有损压缩技术【扩展】JPEG压缩编码原理。5.3.3有损压缩技术4、MPEG动态图像压缩标准视频图像由多幅静止画面(帧)组成。专家组开发了视频图像的数据编码标准MPEG。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026智慧孪生园区解决方案
- 世界糖尿病日:糖尿病早期信号课件
- 12 月年度总结与展望课件
- 世界居室卫生日主题阅读课件
- 儿童重症肺炎发病特点与家庭预警课件
- 2026年高考甲卷理综生物真题卷附答案
- 2026年安徽亳州市高职单招职业技能测试考试试题及答案
- 2025年史地专升本考试题库(含答案)
- 2026高考政治时事政治热点题库含完整答案(历年真练习题)
- 2026定点医疗机构医保业务知识考试题库及答案解析
- 自考13635工程力学(机械)高频考点重点
- 2026新教科版四年级科学上册2.3《 呼吸的变化》课件
- 精算师考试风险管理试题汇编(带解析)
- 2026年山东中考化学真题【含答案解析】
- 2026年采油工(高级技师)模拟试题(含答案)
- 广东省深圳市2026中考语文作文真题解读及范文
- SpaceX IPO Roadshow 上市路演课件
- 地下通道工程监理实施细则
- 12短文二篇 《答谢中书书》《与朱元思书》群文阅读公开课一等奖创新教学设计 统编版语文八年级上册
- 危险化学品无储存经营单位演练记录
- 工业人工智能导论 课件 第7-13章 群智能优化算法与生产调度- 智能机器人与应用
评论
0/150
提交评论