计算机组成与结构PPT课件(全)第3章运算方法和运算部件-_第1页
计算机组成与结构PPT课件(全)第3章运算方法和运算部件-_第2页
计算机组成与结构PPT课件(全)第3章运算方法和运算部件-_第3页
计算机组成与结构PPT课件(全)第3章运算方法和运算部件-_第4页
计算机组成与结构PPT课件(全)第3章运算方法和运算部件-_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第三章 运算方法和运算部件3.1 数据的表示方法和转换3.2 带符号数的二进制数据在机器中的表示及加减法运算3.3 二进制乘法运算3.4 二进制除法3.5 浮点数的运算方法3.6 运算部件3.7 数据校验码基础知识掌握原码一位乘、除重点重点加减乘除奇偶校验码海明校验码*23.1 数据的表示方法和转换本节主要讲解机器中的数据如何表示3.1.1 数值型数据的表示和转换3.1.2 十进制数的编码与运算*33.1.1 数值型数据的表示和转换1、数制四种数制: 二进制、八进制、十进制、十六进制表示方法: 二进制(X)2 、XB 八进制(X)8、XO 十进制(X)10 、XD 十六进制(X)16、XH组

2、成: 二进制 0,1 八进制 07 十进制 09 十六进制 09,AF*4进位记数法,整数部分m位,小数部分k位*52、不同数制间的数据转换(1)二进制 十进制 小数部分和整数部分方法不同(2)二进制 八进制 三位对应一位(3)二进制 十六进制 四位对应一位*63、数据符号的表示机器中符号需要数字化,一般用0表示正号,用1表示负号。有时候正号可以省略。*73.1.2 十进制数的编码与运算1、十进制数位的编码与运算机器中用4位二进制对每个十进制数位进行编码。4位二进制有16种组合,选取其中的十个。常用的方法有:8421码、余3码、格雷码 还可分为:有权码:每一位上的1有唯一确定的值无权码:无法确

3、定每一位上的1代表的值*8有权码 无权码8421 余3码 格雷码0 0000 0011 00001 0001 0100 00012 0010 0101 00113 0011 0110 00104 0100 0111 01105 0101 1000 11106 0110 1001 10107 0111 1010 10008 1000 1011 11009 1001 1100 0100*9BCD码:四个二进制位的权从高到低分别是8,4,2,1,数位内部满足二进制规则,数位之间满足十进制规则。 例:BCD码 0001 0000 相当于十进制10,不等于( 0001 0000 )2。*102、数字串在

4、计算机内的表示与存储(1)字符形式 一个字节放一个十进制数或符号位的ASCII编码值。(2)压缩的十进制数形式 一个字节放两个十进制数,符号位占半个字节。*113.2 带符号数的二进制数据在机器中的表示 及加减法运算机器数:计算机中带符号的二进制数称为机器数。机器数有三种表示方式:原码、反码、补码3.2.1 原码、反码、补码3.2.2 加减运算的溢出判断3.2.3 定点数和浮点数*123.2.1 原码、反码、补码(纯小数)1、原码表示法 原码的定义: X原 =X 0X11 - X=1+|X| -1X0注意:零的原码有两种表示形式+0原=00000 -0原 =10000正数的原码等于真值;负数的

5、原码符号位为1,数值部分等于真值*132、补码表示法 补码的定义: X补 =X 0X12 + X=2 - |X| Mod 2 -1X0正数的补码等于真值;负数的补码等于真值各位取反,末位加1X补 = 2 + X Mod 2 *14补码的加、减法公式(1)同符号的两数相加或两个异号数相减 X+Y补= X补 + Y补 (2)同符号的两数相减或两个异号数相加 X-Y补= X补 + -Y补说明:符号位参与运算;最高位产生的进位自动丢弃*153、反码表示法反码的定义:X反 =X 0X12 -2-n + X Mod (2 - 2-n ) -1X0注意:零的反码有两种表示形式:+0反= 00000 -0反

6、= 11111正数的反码等于真值;负数的反码等于真值各位取反n为小数点后有效位数*16反码的加法公式X+Y反= X反 + Y反 说明:符号位参加运算; 当最高位有进位时要丢掉进位, 在末位加1。*174、数据的原码、补码和反码的相互转换(1)反码表示形式转换成原码方法:正数的原码和反码形式相同 负数的符号位保持不变, 数值部分各位取反(2)补码表示形式转换成原码方法:正数的原码和补码形式相同 负数的符号位保持不变, 数值部分各位取反,末位加1*185、整数的表示形式P77注意:负数的补码公式后加 mod 2n*19原码、补码和反码小结纯小数: 正数的原码、补码和反码形式相同,等于真值 原码:符

7、号位取1,数值部分等于真值; 补码:符号位取1,数值部分等于真值 各位取反,末位加1; 反码:符号位取1,数值部分各位取反负数*202004 上半年程序员试题若码值FFH是一个整数的原码表示,则该整数的真值为_(45)_:若码值FFH是一个整数的补码表示,则该整数的真值为_(46)_。(45)A127B0 C-127D-1(46)A127B0 C-127D-1CD*212004 下半年程序员试题某数值编码为FFH,若它所表示的真值为127,则它是用_(5)_表示的;若它所表示的真值为1,则它是用_(6)_表示的。(5)A.原码B.反码 C.补码D.移码(6)A.原码 B.反码 C.补码 D.移

8、码AC*222004 下半年程序员试题用定点补码表示纯小数,采用8位字长,编码10000000表示的十进制数是_(7)_。(7)A.0 B.1 C.1 D.128B*233.2.2 加减运算的溢出判断 溢出:运算结果超出机器数所能表示的范围时,称为溢出。(上溢、下溢) 条件:两个同符号的数相加或两个异号的数相减。 判断方法: (1)两个同符号的数相加,得到的和的符号与相加数的符号不一致。 (2)任意两数相加,如果数值最高位的进位等于符号位的进位,则无溢出。*24 (3)采用双符号位。 正数的符号位为00,负数的符号位为11。符号位参加运算。如果两个符号位不相同,则溢出。 一般在运算时用双符号位

9、,在存储时只用一个符号位。*253.2.3 定点数和浮点数机器中的数据有两种表示方式:定点数和浮点数。1、定点数定义:小数点位置固定的数。 定点小数小数点固定在数值部分的左边 定点整数小数点固定在数值部分的右边定点数*262、浮点数定义:小数点位置不固定的数据。表示形式: N = M RE说明: N为浮点数,M为尾数,常用规格化形式表示,E为阶码,R为基数或底。常用的浮点数有两种:(1)单精度(32位),阶码8位,尾数24位(2)双精度(64位),阶码11位,尾数53位0.5 |M| 1以补码表示时可以取-1*27 浮点数的阶码通常用补码或移码表示。移码公式:X移= 2n + X -2n X

10、2n移码特点:(1)0表示负数,1表示正数(2)只执行加减运算零的移码唯一 X移=10000把X补符号位取反即可得X移*283、机器中数据的数值范围与精度 数值范围:机器能表示的一个数的最大值与最小值之间的范围 数据精度:一个数的有效位数。从第一个不为0 的数开始算起。 例:C+中 short int 类型变量占4个字节 -32768,327674 位X=0.0001100,有效位数为*292004 下半年程序员试题假设用12个二进制表示数据。它能表示的最大无符号整数为_(8)_;若采用原码,它能表示的最小负整数为_(9)_。(8)A.2047B.2048 C.4095D.4096(9)A.-

11、2047 B.-2048 C.-4095 D.-4096CA*30 3.3 二进制乘法运算要求: 掌握原码一位乘法 理解补码一位乘法 了解原码二位乘法 3.3.1 定点数一位乘法 3.3.2 定点数二位乘法*313.3.1 定点数一位乘法 1、定点原码一位乘法 两个原码数相乘,乘积的符号为两数的异或值,数值为两数绝对值之积。 X原=X0X1X2Xn Y原=Y0Y1Y2Yn XY原 = X原 Y原 =(X0 Y0)|(X1X2Xn) ( Y1Y2Yn )+*32 人工计算X*Y,X = 0.1101,Y = 0.1011 0. 1 1 0 1 0. 1 0 1 1 1 1 0 1 1 1 0 1

12、 0 0 0 0 1 1 0 1 0. 1 0 0 0 1 1 1 1 X*Y=0.10001111*33 机器的原码一位乘法做了如下修改: (1)一般机器不能完成多个数据相加,只能同时进行两个数相加,因此得到一个相加数后与上次部分积相加。 (2)如果相加数不移位,则部分积右移一位。 (3)乘积的高位放在部分积寄存器中,低位放在乘数寄存器中,两个寄存器同时移位。由乘数寄存器的低位来控制相加数。相加数只有两种情况:0或被乘数为1时加被乘数为0时,加0*34 部分积 乘数 被乘数: 1101 00 0000 1 0 1 1 +X 00 1101 00 1101 右移1位 00 0110 1 1 0

13、 1 1 丢失 个位运算 +X 00 1101 01 0011 右移1位 00 1001 1 1 1 0 1 丢失 十位运算 +0 00 0000 00 1001 右移1位 00 0100 1 1 1 1 0 丢失 百位运算 +X 00 1101 01 0001 右移1位 00 1000 1 1 1 1 1 丢失 千位运算 乘积高位 乘积低位 X0 Y0 = 0 X*Y 原=0.10001111+*35 *36实现原码一位乘法的逻辑电路框图*37思考题用原码一位乘计算X = -0.1101,Y = -0.1011*38 0 0 0 0 0 0 1 0 1 1 + X 0 0 1 1 0 1 0

14、 0 1 1 0 1 右移 0 0 0 1 1 0 1 1 0 1 + X 0 0 1 1 0 1 0 1 0 0 1 1 右移 0 0 1 0 0 1 1 1 1 0 +0 0 0 0 0 0 0 0 0 1 0 0 1 右移 0 0 0 1 0 0 1 1 1 1 + X 0 0 1 1 0 1 0 1 0 0 0 1 右移 0 0 1 0 0 0 1 1 1 1 X0 Y0 = 0 X*Y 原=0.10001111+*392004 上半年程序员试题在进行原码乘法时,乘积的符号位是由被乘数的符号位和乘数的符号位通过_(55)_运算来获得的。(55)A或 B与 C异或 D分别取反后再进行或C

15、*402、定点补码一位乘法补码与真值的转换关系X补 = X0. X1 X2 Xn 当X 0时, X补 =0. X1 X2 Xn 当X0时, X补 =1. X1 X2 Xn =2+X X= X补 -2=1. X1 X2 Xn -2= -1+ =Xi2-i Xi2-i X= - X0 + 0. X1 X2 Xn *41补码的右移X补 =X0.X1 X2 XnX= - X0 + 0. X1 X2 Xn = - X0 + 0. X0 X1 X2 Xn X= (- X0 + 0. X1 X2 Xn )/2X/2补 =X0. X0 X1 X2 Xn*42补码一位乘法设被乘数X补=X0.X1X2Xn,乘数Y

16、补=Y0.Y1Y2Yn,则有:XY补=X补(-Y0+ Yi2-i)*43布斯公式XY补=X补(-Y0+ Yi2-i)=X补-Y0+Y12-1+Y22-2+Yn2-n=X补-Y0+(Y1-Y12-1)+(Y22-1-Y22-2)+(Yn2-(n-1)-Yn2-n)=X补(Y1-Y0)+(Y2-Y1)2-1+ +(Yn-Yn-1)2-(n-1) +(0-Yn)2-n=X补 (Yi+1-Yi)2-i(3.17) 乘数的最低1位为Yn,在其后面再添加1位Yn+1,其值为0。*44布斯公式运算规则:乘数末位补一个0(1)Yi+1Yi =00或11,部分积加0,右移一位(2)Yi+1Yi =10,部分积加

17、X补 ,右移一位(3)Yi+1Yi =01,部分积加-X补 ,右移一位 最后一步不移位*45 例:X= - 0.1101,Y= 0.1011, 用补码一位乘求X*Y解:X补 =11.0011, Y补 =0.1011 -X补 =00.1101*46 部 分 积 乘 数 注 释 0 0 0 0 0 0 0. 1 0 1 1 0 + 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 + 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 1 + 1 1 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1

18、 0 0 1 0 1 0 + 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 101,加-X补11,加010,加X补01,加-X补10,加X补*47 0 0 0 1 0 0 0 0 0 1 0 1+ 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1结果:X*Y补=1.01110001 X*Y = - 0.10001111*48 布斯公式的说明1、适合任意符号的定点小数相乘2、乘数寄存器初始化时放的是乘数的补码 并且末位补0*493.3.2 定点数二位乘法 按乘数每两位的组合情况,一次求出对应两位的部分积。 1、原码两位乘法 两位乘数有四

19、种组合 00部分积右移2位 01部分积+X,右移2位 10部分积+2X,右移2位 11部分积+3X,右移2位*50 +3X一般不能一次完成,解决方法是:用4X X来代替+3X,本次运算 X,4X留到下一步执行,因为部分积已经右移了两位,到了下一步就变成了+X。 硬件支持:加一个触发器C来记录是否欠一个4X,如果欠下一个4X,则C=1,否则C=0 。*51 例:X = 0.100111,Y= 0.100111用原码两位乘计算X*Y解: -X补= 1.011001 2X = 01.001110 (非定点数表示) 说明: 减X 相当于加 -X补 *52 部 分 积 乘 数 欠位 0 0 0 0 0

20、0 0 0 1 0 0 1 1 1 0+ -X补 1 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 + 2X 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 + 2X 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 *53 X0 Y0 = 0 X*Y 原=0.010111110001+*54 两位乘的评价优点:提高了运算速度。缺点:逻辑部件增多,功耗增大。*55 3.4

21、二进制除法 原码一位除法有两种方法:恢复余数法和加减交替法,要求掌握原码一位加减交替除法。 两原码数相除,商的符号为两数符号的异或值,数值为两数绝对值相除结果。说明: 定点小数除法,要先比较被除数和除数绝对值的大小,即判断商有无溢出。*56二进制除法的人工计算0.1011/0.1101 0.1101 0.1101 0.10110 1101 10010 1101 10100 1101 0111商为0.1101余数为0.01112-4 *57 1、恢复余数法 首先用被除数绝对值减去除数绝对值,判断差是正还是负,为正时商为1,余数左移一位;为负时商为0,恢复余数,即余数加除数绝对值,然后余数左移一位

22、。 第二步,求商和余数的符号。 思考: 余数的符号怎么确定?与被除数一致*58例:X = 0.1011,Y= 0.1101,求:X/Y的商和余数解: -Y补= 11.0011*59 被除数(余数) 商 操作说明 0 0 1 0 1 1 0 0 0 0 0 开始情形 + 1 1 0 0 1 1 + Y补 1 1 1 1 1 0 0 0 0 0 0 不够减,上商0 + 0 0 1 1 0 1 +Y恢复余数 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 左移 + 1 1 0 0 1 1 + Y补 0 0 1 0 0 1 0 0 0 0 1 够减,上商1 0 1 0 0 1 0

23、0 0 0 1 0 左移 + 1 1 0 0 1 1 +Y补 0 0 0 1 0 1 0 0 0 1 1 够减,上商1 0 0 1 0 1 0 0 0 1 1 0 左移 + 1 1 0 0 1 1 +Y补 1 1 1 1 0 1 0 0 1 1 0 不够减,上商0 + 0 0 1 0 1 1 +Y恢复余数 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 左移 + 1 1 0 0 1 1 + Y补 0 0 0 1 1 1 0 1 1 0 1 够减,上商1 余数=0.011124 商=0.1101*60 2、加减交替法 首先用被除数绝对值减去除数绝对值,判断差是正还是负,为正时

24、商为1,余数左移一位,再减去除数绝对值来求下一位商;为负时商为0,余数左移一位,加上除数绝对值,然后余数左移一位。 最后一步如果商为0,为了得到正确的余数应该恢复余数,即加上除数绝对值。 第二步,求商和余数的符号。*61 加减交替法的证明 第 i-1次求商后的余数为Ri-1 ,下一次求商后的余数为Ri ,两者满足: Ri =2 Ri-1 - |Y| 若Ri 0,则商为0,恢复余数后左移一位,再减去|Y|,得到新的余数Ri+1 即: Ri+1 =2( Ri +|Y|)-|Y|=2 Ri +|Y|*62例 被除数 商 00 1011 00000 -Y补+ 11 0011 11 1110 00000

25、 左移 11 1100 00000 |Y| + 00 1101 00 1001 00001 左移 01 0010 00010 -Y补+ 11 0011 00 0101 00011 左移 00 1010 00110-Y补+ 11 0011 11 1101 00110 左移 11 1010 01100|Y| + 00 1101 00 0111 01101商为0.1101余数为0.01112-4 *63加减交替法的逻辑电路A、X、Q均为n+1位寄存器,其中A存放被除数的原码,X存放除数的原码。移位和加控制逻辑受Q的末位Qn控制。(Qn=1作减法,Qn=0作加法),计数器C用于控制逐位相除的次数n,G

26、D为除法标记,V为溢出标记,S为商符。*64原码加减交替法的控制流程图*定点补码一位除法从X补与Y补直接求X/Y补。补码除法的规则比原码除法的规则复杂。当除数和被除数用补码表示时,判别是否够减,要比较它们的绝对值的大小,因此,若两数同符号,要用减法,若异号,则要用加法。对于判断是否够减,及确定本次上商1还是0的规则,还与结果的符号有关。当商为正时,商的每一位上的值与原码表示一致;而当商为负时,商的各位应是补码形式的值,一般先按各位的反码值上商,除完后,再用在最低位上加1的办法求出正确的补码值。 *65*66 补码除法规则(ri补为余数,数值部分共n位) X补,Y补符号商符第一步操作r补,Y补符

27、号上商下一步操作(共n步)同号0减同号(够减)异号(不够减)102ri补-Y补2ri补+Y补异号1加同号(不够减)异号(够减)102ri补-Y补2ri补+Y补说明:(1) 表中i=0n-1。(2) 商一般采用末位恒置“1”的方法,操作简便。如要提高精度,则按上述规则多求一位,再采用以下方法对商进行处理。两数能除尽:如果除数为正,商不必加2-n,如除数为负,商加2-n;两数除不尽:如果商为正,商不必加2-n,如商为负,商加2-n。 67 3、快速除法方法 跳0跳1法 根据余数前几位代码值再得到几位同为1或0的商。 通过乘法完成 找迭代系数,使分母趋近于1。 *68 3.5 浮点数的运算方法 以2

28、为基数的浮点数为例介绍浮点数的运算方法。 浮点数的表示如下: N = M 2E 尾数M为规格化二进制小数,用原码或补码表示,阶码E用补码或移码表示。 Ms E M*69 3.5.1 浮点数的加减运算 假设有两个浮点数X和Y,计算X +Y: X=MX2Ex Y=MY2Ey ;X、Y均为规格化数。 五个步骤: (1)对阶 比较两个浮点数的阶码Ex和Ey的大小,求出其差E,保留较大的阶码。把阶码小的浮点数的尾数右移| E |位,其阶码变成与较大的阶码相等。 尾数右移时,原码表示的数符号位不参加移位,尾数数值部分高位补0;补码表示的数符号位参加移位,并保持符号位不变。两个阶码相等时,不需要对阶*70

29、(2)尾数的加减运算 对阶后,两个尾数进行加减运算。(3)规格化 假设尾数的数值部分有n位,则规格化数的范围为: 0.5|M原|1-2-n 0.5|M补|1-2-n 即规格化以后的尾数 原码形式为0.1 或1.1 补码形式为0.1 或1.0 *71 左规:尾数左移,阶码应减小。右规:尾数右移,阶码应变大。注意: 计算机中的移位跟数学上的移位不一样,是指小数点固定,数值移位*72 (4)舍入 执行右规时尾数的低位上的数值会被移掉,并且会影响数据精度,常用的舍入方法是: 在运算过程中保留右移出的位,最后对结果用0舍1入法进行处理,即被移走的最高位如果是1则把1加到尾数的低位,如果被移走的最高位是0

30、,则直接去掉。*73 (5)检查阶码是否有溢出 没有溢出则结果正确; 阶码下溢时结果为机器0 阶码上溢时,则置溢出标志*74例题:两个浮点数相加 已知:X = 2010 0.11011011 Y = 2100 ( - 0.10101100 ) 均为真值, 求 :X+Y 要求:阶码用补码计算,尾数用补码计算。*75(1)对阶ExEy补=Ex补+Ey补=00 010+11 100 =11 110Ex Ey,Mx应右移2位, Ex=00 100Mx补=00 0011011011*76(2)尾数相加用补码的加法公式My补= 11 01010100Mx+My补=Mx补+My补= 00 001101101

31、1+ 11 01010100=11 1000101011*77(3)规格化左规,1位M 补=11 0001010110阶码减1E-1补=E补+-1补 =00 100+11 111 =00 011*78(4)舍入M 补=11 0001010110M 补=11 00010110 M= -0.11101010*79(5)判断有无溢出E补= 00 011无溢出X+Y= 2011 (- 0.11101010 )*80 3.5.2 浮点数的乘除运算 1、两个浮点数相乘 五个过程:(1)阶码相加(2)尾数相乘(3)规格化(4)舍入(5)判断阶码是否溢出*81 移码的加减运算公式X+Y移= X移 + Y补X-

32、Y移= X移 + -Y补双符号位溢 出01 正数00 负数10 上溢11 下溢*82移码的加减运算例X=+011,Y=+110X+Y移= X移 + Y补=01 011+00 110=10 001 上溢X-Y移= X移 + -Y补=01 011+11 010=00 101*83浮点乘法例已知:X = 2-5 0.1110011 Y = 23 ( - 0.1110010 ) 均为真值, 求 :X Y 要求:阶码用移码计算,尾数用补码计算。*84(1)阶码相加Ex+Ey移= Ex移 + Ey补 =00 011+00 011 =00 110(2)尾数相乘Mx My补=1.0011001 1001010

33、(3)规格化不需要规格化*85(4)舍入Mx My补=1.0011010(5)判断溢出无溢出X Y= 2110 (- 0.1100110 )*86 2、两个浮点数相除 五个过程:(1)阶码相减(2)尾数相除(3)规格化(4)舍入(5)判断阶码是否溢出*873.6 运算部件 要求掌握定点运算的主要部件:ALU、寄存器、移位电路、计数器等;了解浮点运算部件的组成。 *88定点运算部件*898086的乘法指令:AXOPAD=(DX),(AX)8086的除法指令:(DX)(AX) OPAD商在AX, 余数在DX*90 2、浮点运算部件 根据浮点运算算法,浮点运算器一般包括阶码运算和尾数运算两个部分。阶

34、码运算是一个定点整数运算部件;尾数运算是一个定点小数运算部件。 Intel 80287支持80位浮点数运算,其中阶码16位,尾数64位。关键运算部件有:指数模块:通过指数总线从寄存器中获得运算的阶码,运算结果通过指数总线送回寄存器栈。算术运算部件:负责尾数的四则运算可编程移位器:尾数的移位。*912004年上半年程序员试题构成运算器需要多个部件,_(50)_不是构成运算器的部件。(50)A加法器 B累加器 C地址寄存器 DALU(算术逻辑部件)C*923.7 数据校验码 计算机的数据在读写、存取和传送的过程中可能会出现错误,少量的错误是允许的。 数据校验码:能发现错误或自动纠正错误的数据编码方

35、法。 实现原理:加一些冗余码。 码距:任何两个合法编码之间至少有几个不同的二进制位。*933.7.1 奇偶校验码实现方法:给一个字节加一个校验位。奇校验: 一个字节的8位加上校验位中共有奇数个1偶校验: 一个字节的8位加上校验位中共有偶数个1例:数据 01010100 奇校验:0 01010100 偶校验:1 01010100*94 优点:开销小,码距为2 缺点:只能发现一位或奇数位出错,并且不能发现哪位出错。 因为机器中一位出错的概率比几位同时出错的概率要高的多,所以这种方法有较高的实用价值。*952004 下半年程序员试题某数据的7位编码为0110101,若在其中最高位之前加一位偶校验位,

36、则编码为_(10)_。(10)A.10110101 B.00110101 C.01101011 D.01101010B*96 3.7.2 海明校验码 实现方法:在数据中加几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,会引起有关的几个校验组的值发生变化。 设有R位校验位,则共有0到2R-1个共2R个组合。若用0表示无差错,则剩余2R-1个值表示有差错,并指出错在第几位。由于差错可能发生在K个数据位中或R个校验位中,因此有: 2RR+ K+1 *97数据位k与校验位r的对应关系 k 值r 值(最小)144511512266*98 k位数据位(Di)与r位校验位(Pi

37、)组成的为 Hm Hm-1 H2 H1 编码规律:(1)校验位与数据位之和为m,即k+ r= m, Pi 在海明码中的编号为2i-1 ,其余为数据位。(2)海明码的每一位由多个校验位校验,被校 验的每一位的位号等于校验该位的各个校 验位的位号之和。*99例:长度为一个字节的数据用海明码校 验方法校验 8个二进制需要的校验位为5位,海明码的总长度为13,用H13 H12 H2 H1表示。 5个校验位P5 P1对应的海明码为 H13 、H8、H4、H2、H1 P5 D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1*100表3.9 出错的海明码位号和校验位位号的关系 海明码位号

38、数据位/校验位参与校验的校验位位号被校验位的海明码位号=校验位位号之和H1P111=1H2P222=2H3D11,23=1+2H4P344=4H5D21,45=1+4H6D32,46=2+4H7D41,2,47=1+2+4H8P488=8H9D51,89=1+8H10D62,810=2+8H11D71,2,811=1+2+8H12D84,812=4+8H13P51313=13101 P1参与 D1 、 D2 、 D4、 D5和D7的校验, Pi的偶校验为: P1= D1 D2 D4 D5 D7 P2= D1 D3 D4 D6 D7 P3= D2 D3 D4 D8 P4= D5 D6 D7 D8 为了分清是一位出错还是两位出错,需要一个总校验位P5使P5 = D1 D2 D3 D4 D5 D7 D8 P1 P2 P3 P4+*102 S1= P1 D1 D2 D4 D5 D7 S2= P2 D1 D3 D4 D6 D7 S3= P3 D2 D3 D4 D8 S4= P4 D5 D6 D7 D8S5 = P5 D1 D2 D3 D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论