好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第3章定点数和浮点数.ppt

68页
  • 卖家[上传人]:hs****ma
  • 文档编号:591179241
  • 上传时间:2024-09-16
  • 文档格式:PPT
  • 文档大小:345.51KB
  • / 68 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 3.2.3 定点数和浮点数 计算机中的两种表示方式n n数值范围:一种数据类型所能表示的最大值和最小值n n数据精度:实数所能表示的有效数字位数n n数值范围和数据精度均与使用多少位二进制位数以及编码方式有关n n计算机用数字表示正负,隐含规定小数点 采用“定点”、“浮点”两种表示形式1 1. 数的定点表示方法(1). (1). 定点整数定点整数————小数点位置固定在数的最低位之后小数点位置固定在数的最低位之后 如:如: D Dn-1 n-1 D Dn-2 • • • • • • n-2 • • • • • • D D1 1 D D0 0 .范围:范围: 2 2n-1 n-1 -1-1 ~ ~ -2-2n-1 n-1 ( (采用字长采用字长n=16n=16位补码时其位补码时其值为值为3276732767 ~ -32768) ~ -32768)(2).(2). 定点小数定点小数————小数点位置固定在数的符号位之后、数小数点位置固定在数的符号位之后、数值最高位之前值最高位之前 如:如:D D0 0. D D-1 • • • • • • -1 • • • • • • D D-(n-2) -(n-2) D D-(n-1)-(n-1)范围范围::1 - 1 - 2 2-( -(n-1) n-1) ~ ~ -1-1 ( (采用字长采用字长n=16n=16位时其值为位时其值为32767/32768 ~ -1)32767/32768 ~ -1)其中其中n n表示字长多少位表示字长多少位2 (1) 浮点数的表示:是把字长分成阶码和尾数两部分。

      其根据就是: ① ① J Em-2…….m-2…….E0 0 S D-1……-1……D-(n-1)-(n-1) 阶符阶符 阶码值阶码值 数符数符 . . 尾数值尾数值 ② ② S J Em-2 …….m-2 …….E0 0 D-1……-1……D-(n-1)-(n-1) 数符数符 阶符阶符 阶码值阶码值 . . 尾数值尾数值 通常,阶码为补码或移码定点整数,尾数为补码或原码通常,阶码为补码或移码定点整数,尾数为补码或原码定点小数定点小数 2. 数的浮点表示方法3 (2)浮点数的规格化n n目的:字长固定的情况下提高表示精度的措施: 1 增加尾数位数(但数值范围减小) 2 采用浮点规格化形式4 n n规格化方法:调整阶码使尾数满足下列关系:规格化方法:调整阶码使尾数满足下列关系:uu尾数为原码表示时,无论正负应满足尾数为原码表示时,无论正负应满足1/2<1/2<|d |<1<1 即:小数点后的第一位数一定要为即:小数点后的第一位数一定要为1 1。

      正数的尾数应为0.1x….x负数的尾数应为1.1x….xuu尾数用补码表示时,小数最高位应与数符符号位尾数用补码表示时,小数最高位应与数符符号位相反正数应满足 1/2≦d<1,即 0.1x….x负数应满足 -1/2 > d≥ -1,即 1.0x….x5 例题:设某机器用32位表示一个实数,阶码部分8位(含1位阶符),用定点整数补码表示;尾数部分24位(含数符1位),用规格化定点小数补码表示,基数为2则:1. 求X=256.5 的第一种浮点表示格式 X=(256. 5)X=(256. 5)10 10 =+(100000000.1)=+(100000000.1)2 2 =+(0.1000000001 x =+(0.1000000001 x 2 2+9 +9 ) )2 2 8位阶码为:(+9)补补=0000 1001 24位尾数为:(+0.10 0000 0001)补补 =0.100 0000 0010 0000 0000 0000 所求256.5的浮点表示格式为: 0000 1001 0100 0000 0010 0000 0000 0000 用16进制表示此结果则为:(09402000)166 Y=-(256. 5)10 =-(100000000.1)2 =-0.1000000001 x2+9 8位阶码为:(+9)补补=0000 1001 24位尾数为:(-0.10 0000 0001)补补 =1.011 1111 1110 0000 0000 0000 所求-256.5的浮点表示格式为: 0000 1001 1011 1111 1110 0000 0000 0000 用16进制表示此结果则为:(09BFE000)162. 求Y= -256.5 的第一种浮点表示格式7 (3) 溢出问题n n 定点数的溢出定点数的溢出————根据数值本身判断根据数值本身判断n n 浮点数的溢出浮点数的溢出————根据规格化后的阶码判断根据规格化后的阶码判断上溢——浮点数阶码大于机器最大阶码—— 中断下溢——浮点数阶码小于机器最小阶码—— 零处理溢出的具体判断方法将结合实例在后续课程中介绍溢出的具体判断方法将结合实例在后续课程中介绍8 3.微机中所能表示的数值类型 n n(1)无符号二进制数(字节、字和双字)n n(2)带符号的二进制定点整数形式(16、32、64位补码表示)和18位BCD码整数形式(80bit)。

      n n(3)浮点数(IEEE754标准) 包括数符S、阶码E和尾数D三个字段9 微机中的四种整数类型整数类型 数值范围 精 度 格 式16位整数 -32768~32767 二进制16位 补码表示 短整数 -231~ 231-1 二进制32位 补码表示 长整数 -263~ 263-1 二进制64位 补码表示 BCD整数 -1018+1~1018-1 十进制18位 80个二进制其中最左面1字节的最高位是符号位,余7位无效;另外72位是18位BCD码,原码表示 10 IEEE754标准格式如下 n n (-1)S 2E (D0.D-1……D-(P-1))n n最高是数符S占1位,0表示正、1表示负;指数项E,基数是2,E是一个带有一定偏移量的无符号整数;尾数部分D,它是一个带有一位整数位的二进制小数真值形式其规格化形式应调整阶码使其尾数整数位D0为1且与小数点一起隐含掉11 12 微机中浮点数表示成规格化形式,如下图所示: n n单精度单精度 31 30 23 22 031 30 23 22 0 符号位符号位 阶阶 码码 尾数有效位尾数有效位 1· 1· n n双精度双精度 63 62 52 51 0 63 62 52 51 0 符号位符号位 阶阶 码码 尾数有效位尾数有效位 1·1·扩展精度扩展精度 79 78 64 63 0 79 78 64 63 0 符号位符号位 阶阶 码码 尾数有效位尾数有效位 n n 微机中浮点数的三种表示形式微机中浮点数的三种表示形式 13 例如将十进制数178.125表示成微机中的单精度浮点数n n解:178.125=10110010.001B =1.0110010001x27 指数E=7+127=134=10000110B 127是单精度浮点数应加的指数偏移量,其完整的浮点数形式为 : 0 10000110 011 0010 0010 0000 0000 0000 = 43322000H14 例:将下面Pentium机中的单精度浮点数表示成十进制真值是多少?0011 ,1111,0101,1000,0000,0000,0000,0000数符:S=(-1) 0=1 (正号)阶码: E=(01111110)2-127=126-127= -1尾数: D=(1.1011)2X= 1.1011x2-1= (0.11011)2=0.8437515 3.2.4 数字化信息的编码及表示 计算机进行数据处理和运算,就必须首先实现数字化表达。

      另外由于计算机除了数据处理和运算外,还要进行各种文字(特别是中文)的处理与编辑因此,所有由计算机处理的信息也要用数字进行编码这样在物理机制上可以以数字信号表示.16 信息的数字化表示形式n n数字信号:是一种在时间上或空间上离散的信号,单个信号是常用的二值逻辑(0或1),依靠多位信号组合表示广泛的信息.17 1.用一串脉冲信号表示数字代码(先发低位后发高位为例)1 0 1 10tU18 2.用一组电平信号表示数字代码0tU10tU10tU00tU119 n n3.用一组数字代码表示字符(如ASCII码)n n4.用若干点的组合表示图像 (如图形点阵码)n n5.用数字信号表示声音 (如VCD DVD光盘)n n6.用数字代码表示命令与状态20 数字化方法表示信息的优点:n n抗干扰能力强,可靠性高;n n位数增多则数的表示范围可扩大;n n物理上容易实现,并可存储;n n表示信息的范围与类型极其广泛;n n能用逻辑代数等数字逻辑技术进行处理.21 3.3 二进制乘法运算1.软件编程方法实现软件编程方法实现(时序控制乘法器)时序控制乘法器) 由手算到机器实现,要解决三个问题:符号问题、由手算到机器实现,要解决三个问题:符号问题、由手算到机器实现,要解决三个问题:符号问题、由手算到机器实现,要解决三个问题:符号问题、部分积相加进位问题、移位问题。

      部分积相加进位问题、移位问题部分积相加进位问题、移位问题部分积相加进位问题、移位问题 原码乘法是先取绝对值相乘,再根据同号相乘为正、原码乘法是先取绝对值相乘,再根据同号相乘为正、原码乘法是先取绝对值相乘,再根据同号相乘为正、原码乘法是先取绝对值相乘,再根据同号相乘为正、异号相乘位负,单独决定符号位补码乘法则让符号异号相乘位负,单独决定符号位补码乘法则让符号异号相乘位负,单独决定符号位补码乘法则让符号异号相乘位负,单独决定符号位补码乘法则让符号位直接参加运算,算法将会复杂一些位直接参加运算,算法将会复杂一些位直接参加运算,算法将会复杂一些位直接参加运算,算法将会复杂一些2.硬件快速乘法器实现硬件快速乘法器实现 利用中大规模集成电路芯片,在一拍节中实现多项利用中大规模集成电路芯片,在一拍节中实现多项利用中大规模集成电路芯片,在一拍节中实现多项利用中大规模集成电路芯片,在一拍节中实现多项部分积的相加,成为阵列乘法器部分积的相加,成为阵列乘法器部分积的相加,成为阵列乘法器部分积的相加,成为阵列乘法器 22 3.3.1 定点数一位乘法定点数一位乘法1. 定点原码一位乘定点原码一位乘规则规则规则规则: :在机器中采用在机器中采用在机器中采用在机器中采用A,B,CA,B,C寄存器来分别存放部分积,被乘寄存器来分别存放部分积,被乘寄存器来分别存放部分积,被乘寄存器来分别存放部分积,被乘数和乘数数和乘数数和乘数数和乘数 ((((1 1)在机器内一次加法操作只能求出两数之和,因此)在机器内一次加法操作只能求出两数之和,因此)在机器内一次加法操作只能求出两数之和,因此)在机器内一次加法操作只能求出两数之和,因此每求得一个相加数时,就得与上次部分积相加。

      每求得一个相加数时,就得与上次部分积相加每求得一个相加数时,就得与上次部分积相加每求得一个相加数时,就得与上次部分积相加 ((((2 2)人工计算时,相加数逐次向左偏移一位,由于最)人工计算时,相加数逐次向左偏移一位,由于最)人工计算时,相加数逐次向左偏移一位,由于最)人工计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(或被乘数)的两倍后的乘积位数是乘数(或被乘数)的两倍后的乘积位数是乘数(或被乘数)的两倍后的乘积位数是乘数(或被乘数)的两倍. .由于在求本由于在求本由于在求本由于在求本次部分积时,前一次部分积的最低位,不再参与运算,次部分积时,前一次部分积的最低位,不再参与运算,次部分积时,前一次部分积的最低位,不再参与运算,次部分积时,前一次部分积的最低位,不再参与运算,因此可将其右移一位相加数可直送而不必偏移,于是因此可将其右移一位相加数可直送而不必偏移,于是因此可将其右移一位相加数可直送而不必偏移,于是因此可将其右移一位相加数可直送而不必偏移,于是用用用用N N位加法器就可实现两个位加法器就可实现两个位加法器就可实现两个位加法器就可实现两个N N位数相乘。

      位数相乘位数相乘位数相乘 ((((3 3)部分积右移时乘数寄存器同时右移一位,这样可)部分积右移时乘数寄存器同时右移一位,这样可)部分积右移时乘数寄存器同时右移一位,这样可)部分积右移时乘数寄存器同时右移一位,这样可以用乘数寄存器的最低位来控制相加数(取被乘数或零)以用乘数寄存器的最低位来控制相加数(取被乘数或零)以用乘数寄存器的最低位来控制相加数(取被乘数或零)以用乘数寄存器的最低位来控制相加数(取被乘数或零),同时乘数寄存器的最高位可接收部分积右移出来的一,同时乘数寄存器的最高位可接收部分积右移出来的一,同时乘数寄存器的最高位可接收部分积右移出来的一,同时乘数寄存器的最高位可接收部分积右移出来的一位,因此,完成乘法运算后,位,因此,完成乘法运算后,位,因此,完成乘法运算后,位,因此,完成乘法运算后,A A寄存器中保存乘积的高寄存器中保存乘积的高寄存器中保存乘积的高寄存器中保存乘积的高位部分,乘数寄存器位部分,乘数寄存器位部分,乘数寄存器位部分,乘数寄存器C C中保存乘积的低位部分中保存乘积的低位部分中保存乘积的低位部分中保存乘积的低位部分23 例例:设设X=0.1101,Y=0.1011,求求X•Y. 其中寄存器其中寄存器B=X ,Cd=4.流程图流程图3.6 计算过程如下计算过程如下:0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 10 0 0 1 1 0 1 1 0 10 0 1 1 0 10 1 0 0 1 10 0 1 0 0 1 1 1 1 00 0 0 0 0 00 0 1 0 0 10 0 0 1 0 0 1 1 1 10 0 1 1 0 10 1 0 0 0 10 0 1 0 0 0 1 1 1 1 +x右移一位→+x右移一位→+0右移一位→+x右移一位→部分积 A 乘数 C 乘积高位 乘积低位1(丢失)1(丢失)0(丢失)1(丢失)X•Y=0.1000111124 n注意:注意:n两操作数的绝对值相乘,两操作数的绝对值相乘, 符号位单符号位单独处理。

      独处理n寄存器寄存器A.B均设置双符号位,第均设置双符号位,第1符符号位始终是部分积符号,决定在右号位始终是部分积符号,决定在右移时第移时第1符号位补符号位补0n操作步数由乘数的尾数位数决定,操作步数由乘数的尾数位数决定,用计数器用计数器Cd来计数即作来计数即作n次累加和次累加和移位n最后是加符号位,根据最后是加符号位,根据Sx⊕ ⊕Sy决定25 2.定点补码一位乘法定点补码一位乘法 实现补码乘法有两种方法,现在广泛使用的是实现补码乘法有两种方法,现在广泛使用的是Booth算法,也称为比较法这种方法在机器实算法,也称为比较法这种方法在机器实现中要在乘数末位现中要在乘数末位Yi i之后再增加一个附加位之后再增加一个附加位Yi+1i+1,并令其初始值为并令其初始值为0然后根据比较然后根据比较Yi i、、、、 Yi+1i+1的值决的值决定下一步操作,规则如下:定下一步操作,规则如下:(部分积初始为部分积初始为0) Yi i Yi+1 i+1 操操 作作 0 0 原部分积右移一位原部分积右移一位 0 1 原部分积加原部分积加X补补补补后再右移一位后再右移一位 1 0 原部分积加原部分积加[-X补补补补]后再右移一位后再右移一位 1 1 原部分积右移一位原部分积右移一位26 例例3.35:设设X=-0.1101,Y=0.1011,即即[X]补补=11.0011,[Y]补补=0.1011 ,[-X]=00.1101 求求[X•Y]补补.计算过程如下计算过程如下:0 0 0 0 0 0 0. 1 0 1 1 0 初始值,最后一位补0 0 0 1 1 0 1 Y5Y4=01 +[-X]补0 0 1 1 0 10 0 0 1 1 0 1 0 1 0 1 1 右移一位0 0 0 0 0 0 Y4Y3=11 +00 0 0 1 1 00 0 0 0 1 1 0 1 0 1 0 1 右移一位1 1 0 0 1 1 Y3Y2=10 +[X]补1 1 0 1 1 01 1 1 0 1 1 0 0 1 0 1 0 右移一位 0 0 1 1 0 1 Y2Y1=01 +[-X]补0 0 1 0 0 00 0 0 1 0 0 0 0 0 1 0 1 右移一位1 1 0 0 1 1 Y1Y0=10 +[X]补1 1 0 1 1 1 0 0 0 1+→+→+→+→+部分积 乘数Y Yi Yi+1 说明乘积高位 乘积低位[X•Y]补=1.01110001, X•Y=-0.1000111127 n n初始值与符号位:初始值与符号位:A寄存器存放部分累加和,寄存器存放部分累加和,初始为初始为0,采用双符号位。

      第,采用双符号位第1符号位指示累符号位指示累加和的正负,以控制右移时补加和的正负,以控制右移时补0或补或补1B中中存放被乘数的补码,双符号位存放被乘数的补码,双符号位n n基本操作:用基本操作:用C寄存器最末两位作判断位,寄存器最末两位作判断位,决定下一步的操作决定下一步的操作n n移位移位:在右移时,第在右移时,第2符号位值移入位数的最符号位值移入位数的最高位,第高位,第1符号位值不变且移入第符号位值不变且移入第2符号位符号位,,而而A寄存器末位移寄存器末位移入入C寄存器n n步数与最后一步操作步数与最后一步操作:乘数有效位是乘数有效位是4位,共位,共作作5步注意,最后一步不移位因为这一步步注意,最后一步不移位因为这一步是用来处理符号位的是用来处理符号位的 28 3.4.1 定点除法运算 1. 1.定点原码一位除法定点原码一位除法定点原码一位除法定点原码一位除法 有恢复余数法和不恢复余数法(加减交替法),计算机中常用有恢复余数法和不恢复余数法(加减交替法),计算机中常用有恢复余数法和不恢复余数法(加减交替法),计算机中常用有恢复余数法和不恢复余数法(加减交替法),计算机中常用后者。

      因为它的操作步骤少,而且也不复杂其处理思想是:先后者因为它的操作步骤少,而且也不复杂其处理思想是:先后者因为它的操作步骤少,而且也不复杂其处理思想是:先后者因为它的操作步骤少,而且也不复杂其处理思想是:先减后判,如减后发现不够减,则在下一步改作加除数操作这样减后判,如减后发现不够减,则在下一步改作加除数操作这样减后判,如减后发现不够减,则在下一步改作加除数操作这样减后判,如减后发现不够减,则在下一步改作加除数操作这样操作步骤固定易于编程其要点如下:操作步骤固定易于编程其要点如下:操作步骤固定易于编程其要点如下:操作步骤固定易于编程其要点如下: (1)(1)要求被除数要求被除数要求被除数要求被除数| |X|

      运算中时放在商寄存器中运算中时放在商寄存器中运算中时放在商寄存器中运算中,,,,放被除数和商的放被除数和商的放被除数和商的放被除数和商的A A、、、、C C寄存器同时寄存器同时寄存器同时寄存器同时移位,并将商寄存器移位,并将商寄存器移位,并将商寄存器移位,并将商寄存器C C中最高位移到被除数寄存器中最高位移到被除数寄存器中最高位移到被除数寄存器中最高位移到被除数寄存器A A的最低位中的最低位中的最低位中的最低位中 ((((3 3)每步操作后,可根据余数)每步操作后,可根据余数)每步操作后,可根据余数)每步操作后,可根据余数RiRi符号来判断是否够减:符号来判断是否够减:符号来判断是否够减:符号来判断是否够减:RiRi位正位正位正位正表明够减,上商表明够减,上商表明够减,上商表明够减,上商为为为为1 1RiRi为负表明不够减,上商为负表明不够减,上商为负表明不够减,上商为负表明不够减,上商为为为为0 0 ((((4 4)基本操作可用通式描述为:)基本操作可用通式描述为:)基本操作可用通式描述为:)基本操作可用通式描述为:RiRi=2Ri+(1-2Qi)Y=2Ri+(1-2Qi)Y (5(5原码除的思想是先当成正数相除,若最后一步所得余数为负,原码除的思想是先当成正数相除,若最后一步所得余数为负,原码除的思想是先当成正数相除,若最后一步所得余数为负,原码除的思想是先当成正数相除,若最后一步所得余数为负,则应恢复余数,但不移位,以保持则应恢复余数,但不移位,以保持则应恢复余数,但不移位,以保持则应恢复余数,但不移位,以保持RiRi为正。

      为正 举例如下:举例如下:举例如下:举例如下:29 例例3.39:设被乘数设被乘数X=0.1011,Y=0.1101,用加减交替法求用加减交替法求X/Y. [-Y]补补=11.0011,计算过程如下计算过程如下: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 不够减,商上01 1 1 1 0 0 0 0 0 0 0 左移0 0 1 1 0 1 +Y0 0 1 0 0 1 0 0 0 0 1 够减,商上10 1 0 0 1 0 0 0 0 1 0 左移1 1 0 0 1 1 +[-Y]补0 0 0 1 0 1 0 0 0 1 1 够减,商上10 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 不够减,商上01 1 1 0 1 0 0 1 1 0 0 左移0 0 1 1 0 1 +Y0 0 0 1 1 1 0 1 1 0 1 够减,商上1+)+)+)+)+)被除数(余数R) (被除数)(商) 操作说明余数 商X/Y=0.1101, 余数=0.011130 n nA A寄存器中开始时存放被除数的绝对值,以后将存寄存器中开始时存放被除数的绝对值,以后将存寄存器中开始时存放被除数的绝对值,以后将存寄存器中开始时存放被除数的绝对值,以后将存放各次余数,取双符号位。

      放各次余数,取双符号位放各次余数,取双符号位放各次余数,取双符号位B B寄存器存放除数的绝寄存器存放除数的绝寄存器存放除数的绝寄存器存放除数的绝对值,取双符号位对值,取双符号位对值,取双符号位对值,取双符号位C C寄存器同来存放商,取单符寄存器同来存放商,取单符寄存器同来存放商,取单符寄存器同来存放商,取单符号位n n第一步操作:将被除数第一步操作:将被除数第一步操作:将被除数第一步操作:将被除数X X视为初始余数视为初始余数视为初始余数视为初始余数R R0 0, ,根据根据根据根据R R0 0符符符符号位正(绝对值),令商符为号位正(绝对值),令商符为号位正(绝对值),令商符为号位正(绝对值),令商符为0 0,正是的商符以后再,正是的商符以后再,正是的商符以后再,正是的商符以后再置入第一步为置入第一步为置入第一步为置入第一步为- -Y Yn n商值则根据余数商值则根据余数商值则根据余数商值则根据余数R R0 0的符号来决定,正则商上的符号来决定,正则商上的符号来决定,正则商上的符号来决定,正则商上1 1,求下,求下,求下,求下一位商的办法是余数左移一位再减去除数;当余数一位商的办法是余数左移一位再减去除数;当余数一位商的办法是余数左移一位再减去除数;当余数一位商的办法是余数左移一位再减去除数;当余数为负则商上为负则商上为负则商上为负则商上0 0,求下一位商的办法是余数左移一位再,求下一位商的办法是余数左移一位再,求下一位商的办法是余数左移一位再,求下一位商的办法是余数左移一位再加上除数。

      左移位时末位补加上除数左移位时末位补加上除数左移位时末位补加上除数左移位时末位补0 0n n操作步数与最后一步操作:如果要求得操作步数与最后一步操作:如果要求得操作步数与最后一步操作:如果要求得操作步数与最后一步操作:如果要求得n n位商(不含位商(不含位商(不含位商(不含符号位),则需作符号位),则需作符号位),则需作符号位),则需作n n步步步步“ “左移左移左移左移- -加减加减加减加减” ”循环;若第循环;若第循环;若第循环;若第n n步余数为负,则需增加一步恢复余数,这增加的一步余数为负,则需增加一步恢复余数,这增加的一步余数为负,则需增加一步恢复余数,这增加的一步余数为负,则需增加一步恢复余数,这增加的一步不移位步不移位步不移位步不移位31 2.定点补码一位除法(加减交替法)n n补码除法规则表:补码除法规则表:X X补、补、补、补、Y Y补、补、补、补、r补补补补分别为被除数、除数和余分别为被除数、除数和余分别为被除数、除数和余分别为被除数、除数和余数数数数 X X补补Y Y补补数数 符符商符商符第一步第一步操作操作r r补补 Y Y补补数数 符符 上商上商 下一步操作下一步操作同号同号 0 0 减法减法同号(够减)同号(够减)异号(不够减)异号(不够减) 1 1 0 02[2[r ri i] ]补补-- --Y Y补补2[2[r ri i] ]补补+ +Y Y补补异号异号 1 1 加法加法同号(不够减)同号(不够减)异号(够减)异号(够减) 1 1 0 02[2[r ri i] ]补补-- --Y Y补补2[2[r ri i] ]补补+ +Y Y补补32 n n以上是在以上是在以上是在以上是在| |X|<|Y|X|<|Y|即不溢出的前提下;即不溢出的前提下;即不溢出的前提下;即不溢出的前提下;((((1 1)第一步如果被除数与除数同号,用被除数减去除数;)第一步如果被除数与除数同号,用被除数减去除数;)第一步如果被除数与除数同号,用被除数减去除数;)第一步如果被除数与除数同号,用被除数减去除数;若两数异号,用被除数加上除数。

      如果所得余数与除数若两数异号,用被除数加上除数如果所得余数与除数若两数异号,用被除数加上除数如果所得余数与除数若两数异号,用被除数加上除数如果所得余数与除数同号上商同号上商同号上商同号上商1 1,若余数与除数异号,上商,若余数与除数异号,上商,若余数与除数异号,上商,若余数与除数异号,上商0 0,该商即为结果,该商即为结果,该商即为结果,该商即为结果的符号位的符号位的符号位的符号位2 2)求商的数值部分)求商的数值部分)求商的数值部分)求商的数值部分 如果上次上商如果上次上商如果上次上商如果上次上商1 1,将余数左移一位,将余数左移一位,将余数左移一位,将余数左移一位后减去除数;如果上次上商后减去除数;如果上次上商后减去除数;如果上次上商后减去除数;如果上次上商0 0,将余数左移一位后加上,将余数左移一位后加上,将余数左移一位后加上,将余数左移一位后加上除数然后判断本次操作后的余数,如果余数与除数同除数然后判断本次操作后的余数,如果余数与除数同除数然后判断本次操作后的余数,如果余数与除数同除数然后判断本次操作后的余数,如果余数与除数同号上商号上商号上商号上商1 1;若余数与除数异号上商;若余数与除数异号上商;若余数与除数异号上商;若余数与除数异号上商0 0。

      如此重复执行如此重复执行如此重复执行如此重复执行 n-l -l次(设数值部分有次(设数值部分有次(设数值部分有次(设数值部分有n n位)3 3)商的最后一位一般采用恒置)商的最后一位一般采用恒置)商的最后一位一般采用恒置)商的最后一位一般采用恒置1 1的办法,井省略了最低的办法,井省略了最低的办法,井省略了最低的办法,井省略了最低位位位位+1+1的操作,此时最大误差为士的操作,此时最大误差为士的操作,此时最大误差为士的操作,此时最大误差为士2 2- -n n. .如果对商的精度要如果对商的精度要如果对商的精度要如果对商的精度要求较高则可按规则(求较高则可按规则(求较高则可按规则(求较高则可按规则(2 2)再进行一次操作以求得商的第)再进行一次操作以求得商的第)再进行一次操作以求得商的第)再进行一次操作以求得商的第n n位当除不尽时若商为负,要在商的最低一位加位当除不尽时若商为负,要在商的最低一位加位当除不尽时若商为负,要在商的最低一位加位当除不尽时若商为负,要在商的最低一位加 1 1,使,使,使,使商从反码值转变成补码值商从反码值转变成补码值商从反码值转变成补码值商从反码值转变成补码值; ;若商为正最低位不需要加若商为正最低位不需要加若商为正最低位不需要加若商为正最低位不需要加1 1。

      33 例例3.40:设设[X]补补=1.0111,[Y]补补=0.1101,求求[X/Y]补补. [-Y]补补=11.0011,计算过程如下计算过程如下:[X/Y]补=1.01011 1 0 1 1 1 0 0 0 0 0 开始情形0 0 1 1 0 1 两数异号+[Y]补 ?书0 0 0 1 0 0 0 0 0 0 1 余数与除数同号,商上10 0 1 0 0 0 0 0 0 1 0 左移1 1 0 0 1 1 上次商1,+[-Y]补1 1 1 0 1 1 0 0 0 1 0 余数与除数异号,商上01 1 0 1 1 0 0 0 1 0 0 左移0 0 1 1 0 1 上次商0,+[-Y]补0 0 0 0 1 1 0 0 1 0 1 余数与除数同号,商上10 0 0 1 1 0 0 1 0 1 0 左移 1 1 0 0 1 1 上次商1, +[-Y]补1 1 1 0 0 1 0 1 0 1 0 余数与除数异号,商上01 1 0 0 1 0 1 0 1 0 1 左移,商的最低位恒置1+)+)+)+)被除数(余数) 商 操作说明余数 商34 n n例例3.40最低位恒置最低位恒置1,余数不正确。

      余数不正确n nA寄存器存放被除数(补码),以后存放余数,寄存器存放被除数(补码),以后存放余数,取双符号位取双符号位B寄存器存放除数(补码),双寄存器存放除数(补码),双符号位C寄存器存放商,初始值为寄存器存放商,初始值为0(未考(未考虑商符之前),单符号位虑商符之前),单符号位n n如余数为如余数为0,则表示除尽例,则表示除尽例3.41如采用商的如采用商的最低位恒置最低位恒置1的方法,其误差为的方法,其误差为2-n=2-4n n补码除法规则表补充说明:补码除法规则表补充说明:1、表中、表中i=0~n-1. 2、、上采用末位恒置上采用末位恒置1的方法,操作简便如要的方法,操作简便如要提高精度,则要提高精度,则按上述规则多提高精度,则要提高精度,则按上述规则多求一位,再采用以下方法对商进行处理:求一位,再采用以下方法对商进行处理:两数两数两数两数能除尽时,如除数为正,商不必加能除尽时,如除数为正,商不必加能除尽时,如除数为正,商不必加能除尽时,如除数为正,商不必加2 2- -n n, , 如除数为负,商加如除数为负,商加如除数为负,商加如除数为负,商加2 2- -n n;;两数除不尽时,如商为正,商不必加两数除不尽时,如商为正,商不必加两数除不尽时,如商为正,商不必加两数除不尽时,如商为正,商不必加2 2- -n n, , 如商为负,商加如商为负,商加如商为负,商加如商为负,商加2 2- -n n 。

      35 n n例例例例3.42 [3.42 [X]X]补补补补=1.0111, [Y]=1.0111, [Y]补补补补=1.0011, =1.0011, 则则则则[- [-Y]Y]补补补补 =0.1101=0.1101求[ [X/Y]X/Y]补补补补= =???? 被除数(余数)被除数(余数)被除数(余数)被除数(余数) 商商商商 操作说明操作说明操作说明操作说明 11110111 0111 + 00 + 001101 1101 两数同号,两数同号,+[-+[-Y]Y]补补 0000。

      0100 0 0100 0 余数与除数异号,商余数与除数异号,商0 0 左移左移 000010001000 + 11 + 110011 +[0011 +[Y]Y]补补 11111011 01 1011 01 同号,商同号,商1 1 左移左移 1111。

      01100110 + 00 + 001101 +[-1101 +[-Y]Y]补补 00000011 010 0011 010 异号,商异号,商0 0 左移左移 00000110 0110 + 11 + 11。

      0011 +[0011 +[Y]Y]补补 11111001 0101 1001 0101 同号,商同号,商1 1 左移左移 111100100010 + 00 + 001101 +[-1101 +[-Y]Y]补补 1111。

      1111 01011 1111 01011 同号,商同号,商1 1[ [X/Y]X/Y]补补=0.1011 [=0.1011 [余数余数] ]补补=1=111111111x2x2-4-4 36 3.5 浮点数的运算方法浮点数的表示形式(以浮点数的表示形式(以2为底):为底): N = M ·2E其中,其中,M为浮点数的尾数,一般为绝对值小于为浮点数的尾数,一般为绝对值小于1的的规格化二进制小数用原码或补码形式表示;规格化二进制小数用原码或补码形式表示;E为为浮点数的阶码,一般是用移码或补码表示的整浮点数的阶码,一般是用移码或补码表示的整数 阶码的底除了阶码的底除了2以外,还有用以外,还有用8或或16表示的,表示的,这里先以这里先以2为底进行讨论然后再简介以为底进行讨论。

      然后再简介以8或或16为底的数的运算为底的数的运算37 1. 加、减法运算两数首先均为规格化数,在进行规格化浮点数两数首先均为规格化数,在进行规格化浮点数两数首先均为规格化数,在进行规格化浮点数两数首先均为规格化数,在进行规格化浮点数的加减运算需经过五步完成:的加减运算需经过五步完成:的加减运算需经过五步完成:的加减运算需经过五步完成:n n 对阶操作:低阶向高阶补齐,使阶码相等;对阶操作:低阶向高阶补齐,使阶码相等;对阶操作:低阶向高阶补齐,使阶码相等;对阶操作:低阶向高阶补齐,使阶码相等;n n 尾数运算:阶码对齐后直接对尾数运算;尾数运算:阶码对齐后直接对尾数运算;尾数运算:阶码对齐后直接对尾数运算;尾数运算:阶码对齐后直接对尾数运算;n n 结果规格化:对运算结果进行规格化处理;结果规格化:对运算结果进行规格化处理;结果规格化:对运算结果进行规格化处理;结果规格化:对运算结果进行规格化处理; ( (使补码尾数的最高位和尾数符号相反使补码尾数的最高位和尾数符号相反使补码尾数的最高位和尾数符号相反使补码尾数的最高位和尾数符号相反) ) 如溢出则需左规,如不是规格化时应右规。

      如溢出则需左规,如不是规格化时应右规如溢出则需左规,如不是规格化时应右规如溢出则需左规,如不是规格化时应右规n n 舍入操作:丢失位进行舍入操作:丢失位进行舍入操作:丢失位进行舍入操作:丢失位进行0 0舍舍舍舍1 1入或恒置入或恒置入或恒置入或恒置1 1处理;处理;处理;处理;n n 判断溢出:判断阶码是否溢出,下溢则将运判断溢出:判断阶码是否溢出,下溢则将运判断溢出:判断阶码是否溢出,下溢则将运判断溢出:判断阶码是否溢出,下溢则将运 算结果置算结果置算结果置算结果置0 0,上溢则中断上溢则中断上溢则中断上溢则中断38 具体说明如下:n n 对阶运算对阶运算对阶运算对阶运算( (小阶向大阶对齐小阶向大阶对齐小阶向大阶对齐小阶向大阶对齐) )尾数为原码时尾数为原码时尾数为原码时尾数为原码时, ,尾数右移尾数右移尾数右移尾数右移, ,符号位不动符号位不动符号位不动符号位不动, ,最高位补最高位补最高位补最高位补0 0尾数为补码时尾数为补码时尾数为补码时尾数为补码时, ,尾数右移尾数右移尾数右移尾数右移, ,符号也移位符号也移位符号也移位符号也移位, ,最高位补符号最高位补符号最高位补符号最高位补符号位位位位例如:例如:例如:例如: 求求求求=?=?小阶对大阶小阶对大阶小阶对大阶小阶对大阶舍掉的是舍掉的是舍掉的是舍掉的是如大阶对小阶如大阶对小阶如大阶对小阶如大阶对小阶则舍掉的是则舍掉的是则舍掉的是则舍掉的是39 n n 规格化:原码尾数高位为规格化:原码尾数高位为1,补码与符号相反,补码与符号相反 n n 舍入操作:舍入操作:0舍舍1入入 或或 恒置恒置1例1:求=?0舍1入后为恒置1例2:求 =?0舍1入后为恒置1n n 判断结果的正确性(即结果的阶码是否溢出)40 例:假设 其中指数和小数均为二进制真值其中指数和小数均为二进制真值, ,求求X+Y=?X+Y=? 其阶码其阶码4 4位位( (含阶符含阶符),),补码表示补码表示; ;尾数尾数6 6位位, ,补码表示补码表示, ,尾数符号在最尾数符号在最高位高位, ,尾数数值尾数数值5 5位。

      位 解: 尾符 阶码 尾数5位 [X]浮=0 0010 11010 [Y]浮=1 0011 00010对阶 [X]浮=0 0011 01101尾数求和 00.01101+11.00010=11.01111[X]浮+ [Y]浮=1 0011 01111规格化、舍入操作、阶码溢出判断,最后:[X+Y]真真=41 例例: :假设假设 其中指数和小数均为二进制真值其中指数和小数均为二进制真值, ,求求X-YX-Y其阶码其阶码4 4位位( (含阶符含阶符),),补补码表示码表示; ;尾数尾数6 6位位, ,补码表示补码表示, ,尾数符号在最高位尾数符号在最高位, ,尾数数值尾数数值5 5位位 解: 尾符 阶码 尾数 [X]浮=0 0010 11010 [Y]浮=1 0011 00010对阶 [X]浮=0 0011 01101尾数求差: [X尾-Y 尾]补=[X 尾]补+[-Y 尾]补 =00.01101+00.11110=01.01011 规格化处理、舍入操作均不需要,阶码溢出检查:尾数符号位为01,尾数发生上溢出,做规格化处理 尾数连同符号右移一位00.101011,阶码加1至0100舍入操作恒置1后:[X]浮- [Y]浮=0 0100 10101 [X-Y]真= 42 3.5.2 浮点数的乘、除法运算n n两浮点数相乘其乘积的阶码为相乘两数阶码之和两浮点数相乘其乘积的阶码为相乘两数阶码之和,其尾数应为相乘两数的尾数之积。

      其尾数应为相乘两数的尾数之积n n两个浮点数相除,商的阶码为被除数的阶码减去两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码得到的差,尾数为被除数的尾数除以除数的阶码得到的差,尾数为被除数的尾数除以除数的尾数所得的商除数的尾数所得的商n n参加运算的两个数都为规格化浮点数,乘除运算参加运算的两个数都为规格化浮点数,乘除运算都可能出现结果不满足规格化要求的问题,因此都可能出现结果不满足规格化要求的问题,因此也必须进行规格化、舍入和判溢出等操作规格也必须进行规格化、舍入和判溢出等操作规格化时要修改阶码化时要修改阶码43 n n. .浮点数乘法运算(阶码的底为浮点数乘法运算(阶码的底为浮点数乘法运算(阶码的底为浮点数乘法运算(阶码的底为8 8或或或或1616)))) 前面的讨论,是以阶码值的底为前面的讨论,是以阶码值的底为前面的讨论,是以阶码值的底为前面的讨论,是以阶码值的底为2 2来进行的为了用相同位数的来进行的为了用相同位数的来进行的为了用相同位数的来进行的为了用相同位数的阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底阶码表示更大范围的浮点数,在一些计算机中也有选用阶码的底为为为为8 8或或或或1616的。

      此时浮点数的此时浮点数的此时浮点数的此时浮点数N N被表示成被表示成被表示成被表示成 N=8N=8E E·M ·M 或或或或 N=16N=16E·M·M 阶码阶码阶码阶码E E和尾数和尾数和尾数和尾数MM还都是用二进制表示的,其运算规则与阶码以还都是用二进制表示的,其运算规则与阶码以还都是用二进制表示的,其运算规则与阶码以还都是用二进制表示的,其运算规则与阶码以2 2为底基本相同,但关于对阶和规格化操作有新的相应规定当阶为底基本相同,但关于对阶和规格化操作有新的相应规定当阶为底基本相同,但关于对阶和规格化操作有新的相应规定当阶为底基本相同,但关于对阶和规格化操作有新的相应规定当阶码以码以码以码以8 8为底时,只要尾数满足为底时,只要尾数满足为底时,只要尾数满足为底时,只要尾数满足 1 1////8≤8≤MM<<<<l l 或或或或 一一一一1≤1≤MM〈〈〈〈一一一一1 1////8 8就是规格化数执行对阶就是规格化数。

      执行对阶就是规格化数执行对阶就是规格化数执行对阶和规格化操作时,每当阶码的值增或减和规格化操作时,每当阶码的值增或减和规格化操作时,每当阶码的值增或减和规格化操作时,每当阶码的值增或减1 1,尾数要相应右移或左,尾数要相应右移或左,尾数要相应右移或左,尾数要相应右移或左移三位 当阶码以当阶码以当阶码以当阶码以1616为底时,只要尾数满足为底时,只要尾数满足为底时,只要尾数满足为底时,只要尾数满足1 1////1616《《《《MM<<<<1 1或一或一或一或一1 1《《《《MM<<<<一一一一1 1////1616就是规格化数执行对阶和规格化操作时,阶码的值增或就是规格化数执行对阶和规格化操作时,阶码的值增或就是规格化数执行对阶和规格化操作时,阶码的值增或就是规格化数执行对阶和规格化操作时,阶码的值增或减减减减1 1,尾数必须移四位尾数必须移四位尾数必须移四位尾数必须移四位 判别为规格化数或实现规格化操作,均应使数值的最高三项判别为规格化数或实现规格化操作,均应使数值的最高三项判别为规格化数或实现规格化操作,均应使数值的最高三项判别为规格化数或实现规格化操作,均应使数值的最高三项(以(以(以(以8 8为底)或四位(以为底)或四位(以为底)或四位(以为底)或四位(以1616为底)中至少有一位与符号位不同。

      为底)中至少有一位与符号位不同为底)中至少有一位与符号位不同为底)中至少有一位与符号位不同n n 5 5浮点数除法运算步骤浮点数除法运算步骤浮点数除法运算步骤浮点数除法运算步骤 与乘法运算类似,也分求商的阶码、尾数相除、规格化、与乘法运算类似,也分求商的阶码、尾数相除、规格化、与乘法运算类似,也分求商的阶码、尾数相除、规格化、与乘法运算类似,也分求商的阶码、尾数相除、规格化、舍入和判溢出舍入和判溢出舍入和判溢出舍入和判溢出5 5个步骤,不再详细讨论个步骤,不再详细讨论个步骤,不再详细讨论个步骤,不再详细讨论44 3.6运算部件 1.定点运算部件定点运算部件 定点运算部件由算术逻辑运算部件定点运算部件由算术逻辑运算部件ALU、、若若干个寄存器、移位电路、计数器、门电路等组干个寄存器、移位电路、计数器、门电路等组成ALU部件主要完成加减法算术运算及逻辑部件主要完成加减法算术运算及逻辑运算(其功能可参考运算(其功能可参考 2 4 2节),其中还应包含节),其中还应包含有快速进位电路有快速进位电路2.浮点运算部件浮点运算部件 通常由阶码运算部件和尾数运算部件组成。

      其通常由阶码运算部件和尾数运算部件组成其各自的结构与定点运算部件相似但阶码部分各自的结构与定点运算部件相似但阶码部分仅执行加减法运算其尾数部分则执行加减乘仅执行加减法运算其尾数部分则执行加减乘除运算,左规时有时需要左移多位为加速移除运算,左规时有时需要左移多位为加速移位过程,有的机器设置了可移动多位的电路位过程,有的机器设置了可移动多位的电路45 3.7 计算机中的数据校验方法 采用冗余校验方法:采用冗余校验方法: 即在基本的有效数据外,再扩充部分位,增加即在基本的有效数据外,再扩充部分位,增加部分(冗余部分)被称为校验位将校验位与部分(冗余部分)被称为校验位将校验位与数据位一起按某种规则编码,写入存储器或向数据位一起按某种规则编码,写入存储器或向外发送当从存储器读出或接收到外部传入的外发送当从存储器读出或接收到外部传入的代码时,再按相应的规则进行判读若约定的代码时,再按相应的规则进行判读若约定的规则被破坏,则表示出现错误根据错误的特规则被破坏,则表示出现错误根据错误的特征进行修正恢复征进行修正恢复46 几个名词概念:几个名词概念:码字:由若干代码组成的一个字。

      码字:由若干代码组成的一个字如如8421码中码中6((0110),),7((0111))码距:一种码制中任意两个码字间的最小距离码距:一种码制中任意两个码字间的最小距离距离:两个码字之间不同的代码个数距离:两个码字之间不同的代码个数 8421码中,最小的码距为码中,最小的码距为1,如,如0000和和 0001、、0010和和0011等;最大码距为等;最大码距为4,, 如如0111和和10008421码的码距为码的码距为1码距为码距为1,即不能查错也不能纠错即不能查错也不能纠错码距越大,查错、纠错能力越强码距越大,查错、纠错能力越强47 3.7.1 奇偶校验法 奇偶校验法是计算机中广泛采用的检查传输数奇偶校验法是计算机中广泛采用的检查传输数据准确性的方法奇偶校验法的原理是:据准确性的方法奇偶校验法的原理是: 在每组数据信息上附加一个校验位,校验位的在每组数据信息上附加一个校验位,校验位的取值(取值(0或或1)取决于这组信息中)取决于这组信息中‘1’的个数和校的个数和校验方式(奇或偶校验)验方式(奇或偶校验) 如果采用奇校验,则这组数据加上校验码位后如果采用奇校验,则这组数据加上校验码位后数据中数据中‘1’的个数应为奇数个。

      的个数应为奇数个 如果采用偶校验,则这组数据加上校验码位后如果采用偶校验,则这组数据加上校验码位后数据中数据中‘1’的个数应为偶数个的个数应为偶数个48 例如:八位信息例如:八位信息‘10101011’中共有中共有5个个‘1’,附加校验位后变为九位若采用奇校验,则,附加校验位后变为九位若采用奇校验,则附加的校验位应取附加的校验位应取‘0’值,保证值,保证1的个数为奇的个数为奇数个即数个即 0 10101011 ;若采用偶校验则附加的;若采用偶校验则附加的校验位应取校验位应取‘1’值即值即 1 10101011 奇偶校验的特点:奇偶校验的特点:1、奇偶校验法使数据的码距为、奇偶校验法使数据的码距为2,因而可检出,因而可检出 数据传送过程中奇数个数位出错的情况;数据传送过程中奇数个数位出错的情况;2、实际中两位同时出错的概率极低,奇偶校验、实际中两位同时出错的概率极低,奇偶校验 法简便可靠易行,但它只能发现错误,却不法简便可靠易行,但它只能发现错误,却不 知错在何处,因而不能自动纠正知错在何处,因而不能自动纠正49 偶校验出错奇校验出错偶形成奇形成D校为校验位 D校D1D2D3D4D5D6D7D88位数据的奇偶校验码形成电路及检码电路50 3.7.2 海明码校验方法◇◇海明码校验方法以奇偶校验法为基础,其校验海明码校验方法以奇偶校验法为基础,其校验位不是一个而是一组,故其码距大于位不是一个而是一组,故其码距大于2 。

      ◇◇海明码校验方法能够检测出具体错误并纠正海明码校验方法能够检测出具体错误并纠正◇◇原理是在数据中加入原理是在数据中加入r个校验位,将数据的码个校验位,将数据的码距按照一定规则拉长距按照一定规则拉长r个校验位可以表示个校验位可以表示2r个信息,除一个表示无误信息外,其余个信息,除一个表示无误信息外,其余2r-1信信息可以用来标明错误的具体位置,但由于校验息可以用来标明错误的具体位置,但由于校验位本身也可能在传送中出错,所以只有位本身也可能在传送中出错,所以只有2r-1-r个信息可用,即个信息可用,即r位校验码只可标明位校验码只可标明2r-1-r个错个错误信息或误信息或2r≧≧k+r+1 k是被传送数据的位数是被传送数据的位数 例如例如:用:用4个校验位能可靠传输个校验位能可靠传输24-1-4=11位信位信息;而要校验息;而要校验32位数据则需至少位数据则需至少6个校验位个校验位51 n如要能检测与自动校正一位错井发现两位错此时校验位的位数r和数据位的位数k应满足下述关系: 2r-1≧ k+r (3. 19)n 按式(3.19),可计算出数据位k与校验位r的对应关系,如教材表3.8所示。

      52 一、编码方法(以四个校验位进行说明)四个校验位最多可以校验四个校验位最多可以校验11位数据设:位数据设:D10D9D8D7D6D5D4D3D2D1D0为为11个数据位,个数据位,P4P3P2P1分别为四个校验码,则编码规则是:分别为四个校验码,则编码规则是:‐海明码的总位数等于数据位与校验位之和;海明码的总位数等于数据位与校验位之和;‐每个校验位每个校验位Pi排放在排放在2i-1的位置,例如的位置,例如P4排放排放 在第在第24-1=8位,其余数据位依序排列即:位,其余数据位依序排列即: D10D9D8D7D6D5D4P4D3D2D1P3D0P2P1‐海明码的每一位用多个校验位一起进行校验,海明码的每一位用多个校验位一起进行校验, 被校验的位号等于校验它的各校验位位号和;被校验的位号等于校验它的各校验位位号和;‐各校验位的值为它参与校验的数据位的异或各校验位的值为它参与校验的数据位的异或53 n n海明码校验表海明码校验表海明码位号海明码位号参与校验的校验位位号参与校验的校验位位号参与的校验位参与的校验位 H1 P1 H1 P1 1 1P1P1 H2 P2 H2 P2 2 2P2P2 H3 D0 H3 D0 2,1 (3=2+1)2,1 (3=2+1)P2 P1P2 P1 H4 P3 H4 P3 4 4P3P3 H5 H5 D1 D1 4,1 (5=4+1)4,1 (5=4+1)P3,P1P3,P1 H6 D2 H6 D2 4,2 (6=4+2) 4,2 (6=4+2),P3,P2,P3,P2 H7 D3 H7 D34,2,1 (7=4+2+1)4,2,1 (7=4+2+1)P3,P2,P1P3,P2,P1 H8 P4 H8 P48 8P4P4 H9 D4 H9 D48,1 (8=8+1)8,1 (8=8+1)P4,P1P4,P1 H10 D5 H10 D58,2 (10=8+2)8,2 (10=8+2)P4,P2P4,P2 H11 D6 H11 D68,2,1 (11=8+2+1)8,2,1 (11=8+2+1)P4,P2,P1P4,P2,P1 H12 H12 D7 D7 8,4 (12=8+4)8,4 (12=8+4)P4,P3P4,P3 H13 H13 D8 D8 8,4,1 (13=8+4+1)8,4,1 (13=8+4+1)P4,P3,P1P4,P3,P1 H14 H14 D9 D9 8,4,2 (14=8+4+2)8,4,2 (14=8+4+2)P4,P3,P2P4,P3,P2 H15 D10 H15 D10 8,4,2,1 (15=8+4+2+1)8,4,2,1 (15=8+4+2+1)P4,P3,P2,P1P4,P3,P2,P154 n n各校验位形成公式: P1 1=D0 0⊕ ⊕D1 1⊕ ⊕D3 3⊕ ⊕D4 4⊕ ⊕D6 6⊕ ⊕D8 8⊕ ⊕D10 (1)10 (1) P2 2=D0 0⊕ ⊕D2 2⊕ ⊕D3 3⊕ ⊕D5 5⊕ ⊕D6 6⊕ ⊕D9 9⊕ ⊕D10 (2)10 (2) P3 3=D1 1⊕ ⊕D2 2⊕ ⊕D3 3⊕ ⊕D7 7⊕ ⊕D8 8⊕ ⊕D9 9⊕ ⊕D10 (3)10 (3) P4 4=D4 4⊕ ⊕D5 5⊕ ⊕D6 6⊕ ⊕D7 7⊕ ⊕D8 8⊕ ⊕D9 9⊕ ⊕D10 (4)10 (4) 按上述方式按上述方式Pi的取值是采用偶校验时的取值,的取值是采用偶校验时的取值,当采用奇校验时当采用奇校验时,,Pi则取反。

      这样则取反这样Pi连同数据连同数据位一起形成了海明码的各位位一起形成了海明码的各位 55 二、检查纠错(以四个校验位进行说明) 海明码数据传送到接收方后,再将各校验海明码数据传送到接收方后,再将各校验位的值与它所参与校验的数据位的异或结果进位的值与它所参与校验的数据位的异或结果进行异或运算行异或运算 运算结果称为校验和校验和共运算结果称为校验和校验和共有四个 对偶校验来说,如果校验和不为零则传输对偶校验来说,如果校验和不为零则传输过程中间有错误而错误的具体位置则由四个过程中间有错误而错误的具体位置则由四个校验和依序排列后直接指明如果四个校验和校验和依序排列后直接指明如果四个校验和 S4S3S2S1 依序排列后等于依序排列后等于(1001)2=(9)10 时,就时,就表明海明码的第九位也就是表明海明码的第九位也就是D4发生了错误,此发生了错误,此时只要将时只要将D4取反,也就纠正了错误取反,也就纠正了错误 56 n n校验和校验和Si的表达式:的表达式: S1 1 =D0 0⊕ ⊕D1 1⊕ ⊕D3 3⊕ ⊕D4 4⊕ ⊕D6 6⊕ ⊕D8 8⊕ ⊕D10 10 ⊕ ⊕P1 1 S2 2 = D0 0⊕ ⊕D2 2⊕ ⊕D3 3⊕ ⊕D5 5⊕ ⊕D6 6⊕ ⊕D9 9⊕ ⊕D10 10 ⊕ ⊕P2 2 S3 3 =D1 1⊕ ⊕D2 2⊕ ⊕D3 3⊕ ⊕D7 7⊕ ⊕D8 8⊕ ⊕D9 9⊕ ⊕D10 10 ⊕ ⊕P3 3 S4 4 =D4 4⊕ ⊕D5 5⊕ ⊕D6 6⊕ ⊕D7 7⊕ ⊕D8 8⊕ ⊕D9 9⊕ ⊕D10 10 ⊕ ⊕P4 4 当采用偶校验方式其传送数据正确时,校验和当采用偶校验方式其传送数据正确时,校验和 S1 1 ~ S4 4的值分别都为的值分别都为0;当采用奇校验方式其传;当采用奇校验方式其传送数据正确时,校验和送数据正确时,校验和 S1 1 ~ S4 4的值分别都为的值分别都为1。

      当不为上述值时,传送就发生了错误当不为上述值时,传送就发生了错误 57 解:已知解:已知D10D9D8D7D6D5D4D3D2D1D0=10110100110 由于被校验位的位号等于校验它的各校验位位号由于被校验位的位号等于校验它的各校验位位号之和以及各校验位的取值等于它参与校验的数据位取之和以及各校验位的取值等于它参与校验的数据位取值的异或所以校验位的取值以及值的异或所以校验位的取值以及所求所求海明码为:海明码为:P1=D0 D1   D3   D4   D6   D8   D10=1P2=D0   D2   D3   D5   D6   D9   D10=1P3=D1   D2   D3   D7   D8   D9   D10=1P4=D4   D5   D6   D7   D8   D9   D10=0D10D9D8D7D6D5D4P4D3D2D1P3D0P2P1=101101000111011传送正确时校验和的值为传送正确时校验和的值为0 0,如果不等于,如果不等于0 0,则是几就是,则是几就是第几位出错,是第几位出错,是7 7则是第则是第7 7位位D3出错,此时将其取反即可出错,此时将其取反即可纠正错误。

      纠正错误例题:采用例题:采用4位校验位、偶校验方式,位校验位、偶校验方式, 写出写出10110100110的海明码的海明码58 59 n n 以上以上以上以上 图图图图3.113.11是是是是H=12H=12,,,,数据位数据位数据位数据位k=8k=8,,,,校验位校验位校验位校验位 r=4r=4的海明校验线路,的海明校验线路,的海明校验线路,的海明校验线路,记作(记作(记作(记作(l2.8l2.8))))分组码n n 图图图图3. 3.ll ll中的中的中的中的H12,H11,...,H1H12,H11,...,H1是被校验码,是被校验码,是被校验码,是被校验码,D8,D7,...D8,D7,...,,,,D1D1是纠正后是纠正后是纠正后是纠正后的数据路中,先用奇偶形成线路得到的数据路中,先用奇偶形成线路得到的数据路中,先用奇偶形成线路得到的数据路中,先用奇偶形成线路得到S4,S3,S2,S1S4,S3,S2,S1,,,,如果如果如果如果S4S4~~~~S1S1为全为全为全为全“ “0”0”,说明代码无错,则,说明代码无错,则,说明代码无错,则,说明代码无错,则D8D7...DI=H12H11H10H9H7H6H5H3D8D7...DI=H12H11H10H9H7H6H5H3。

      如果如果如果如果S4S4~~~~S1S1不为全不为全不为全不为全0 0,说,说,说,说明有错若为明有错若为明有错若为明有错若为11001100或或或或10111011,则分别表示,则分别表示,则分别表示,则分别表示H12H12或或或或HllHll位错,对应这两位错,对应这两位错,对应这两位错,对应这两种出错情况,相关的两条译码线之一为种出错情况,相关的两条译码线之一为种出错情况,相关的两条译码线之一为种出错情况,相关的两条译码线之一为“ “l”l”,,,,它与相应的数据它与相应的数据它与相应的数据它与相应的数据使经异或线路,就把该位校正过来,得到正确编码输出依此类使经异或线路,就把该位校正过来,得到正确编码输出依此类使经异或线路,就把该位校正过来,得到正确编码输出依此类使经异或线路,就把该位校正过来,得到正确编码输出依此类推如推如推如推如S4S3S2S1S4S3S2S1为为为为10101010,,,, 10011001,,,,01110111,,,,01100110,,,,01010101或或或或00110011,分别表示,分别表示,分别表示,分别表示H10H10,,,,H9,H7,H6,H5H9,H7,H6,H5或或或或H3H3位错,用相同的方法予以纠正、如错误发生在校验位上。

      则相位错,用相同的方法予以纠正、如错误发生在校验位上则相位错,用相同的方法予以纠正、如错误发生在校验位上则相位错,用相同的方法予以纠正、如错误发生在校验位上则相关的译码线(关的译码线(关的译码线(关的译码线(10001000,,,,0 0l00l00,,,,00100010,,,,00010001))))之一为之一为之一为之一为l l,,,,在图在图在图在图3 113 11中未中未中未中未画出n n 如前所述,假如要进一步判别是如前所述,假如要进一步判别是如前所述,假如要进一步判别是如前所述,假如要进一步判别是1 1位错还是位错还是位错还是位错还是2 2位错,则再增加一位错,则再增加一位错,则再增加一位错,则再增加一个校验位、并用图个校验位、并用图个校验位、并用图个校验位、并用图 3.123.12来取代图来取代图来取代图来取代图3.113.11虚框中的内容,此时增加了虚框中的内容,此时增加了虚框中的内容,此时增加了虚框中的内容,此时增加了一个奇偶形成线路一个奇偶形成线路一个奇偶形成线路一个奇偶形成线路S5S5如为一位错,仍按图如为一位错,仍按图如为一位错,仍按图如为一位错,仍按图3.113.11来纠正数据位;来纠正数据位;来纠正数据位;来纠正数据位;如为两位错,则无法纠正错误。

      如为两位错,则无法纠正错误如为两位错,则无法纠正错误如为两位错,则无法纠正错误60 3.7.3 循环冗余校验方法(CRC码)循环冗余校验方式:通过某种数学公式建循环冗余校验方式:通过某种数学公式建立信息位和校验位之间的约定关系立信息位和校验位之间的约定关系——能能够校验传送信息的对错,并且能自动修正够校验传送信息的对错,并且能自动修正错误广泛用于通信和磁介存储器中广泛用于通信和磁介存储器中CRC编码格式是在k位信息后加r位检验码N N-1 2 1 信息位(信息位(k k位)位) 校验位(校验位(r r位)位)C1 C2 …... C K r 1 r 2 …… r i 61 1、CRC码的编码方法CRCCRC整个编码长度为整个编码长度为整个编码长度为整个编码长度为 n=k+r n=k+r 位,故位,故位,故位,故CRCCRC码又叫码又叫码又叫码又叫 ((((n n,,,,k k))))码。

      其编码方法如下:码其编码方法如下:码其编码方法如下:码其编码方法如下: 假设被传送的假设被传送的假设被传送的假设被传送的k k位二进制信息位用位二进制信息位用位二进制信息位用位二进制信息位用C(x)C(x)表示表示表示表示, , 系系系系统选定的生成多项式用统选定的生成多项式用统选定的生成多项式用统选定的生成多项式用G(X)G(X)表示,将表示,将表示,将表示,将C(x)C(x)左移左移左移左移 G(X)G(X)的最高次幂的最高次幂的最高次幂的最高次幂( (即等于需要添加的校验位的位数即等于需要添加的校验位的位数即等于需要添加的校验位的位数即等于需要添加的校验位的位数r)r),,,,写作写作写作写作 C(x) • 2 C(x) • 2 r r然后将其然后将其然后将其然后将其C(x) • 2 C(x) • 2 r r除以生成多项式除以生成多项式除以生成多项式除以生成多项式G(x)G(x),,,,所得商用所得商用所得商用所得商用Q(x)Q(x)表示,余数用表示,余数用表示,余数用表示,余数用R(x)R(x)表示则:表示则:表示则:表示。

      则:两边同时乘以两边同时乘以G(x)G(x)并左移并左移 R(x) R(x) 得到:得到:62 故有:上式中,等式左边即为所求的上式中,等式左边即为所求的n位位CRC码,其码,其中余数表达式中余数表达式R(x)就是校验位就是校验位(r位位)且等式两且等式两边都是边都是G(x)的倍数 发送信息时将等式左边生成的发送信息时将等式左边生成的n位位CRC码送给对码送给对方当接收方接到接收方接到n位编码后,同样除以位编码后,同样除以G(x),,如如果传输正确则余数为果传输正确则余数为0,否则则可以根据余数的数,否则则可以根据余数的数值确定是哪位数据出错值确定是哪位数据出错由于由于CRC编码采用的加、减法是按位加减法,编码采用的加、减法是按位加减法,即不考虑进位与借位,运算规则为:即不考虑进位与借位,运算规则为: 0 0=0,,0 1=1,,1 0=1,,1 1=063 例:有一个(例:有一个(7,4)码(即)码(即CRC码为码为7位,信息位,信息码为码为4位),已确定生成多项式为:位),已确定生成多项式为: G((X))=X3+X+1= 1011被传输的信息被传输的信息C(x)=1001,求,求C(x)的的CRC码。

      码解:C(x)左移 r = n–k = 3 位 即:将上式模2采用除法 除以给定的 G(x)=1011: 1001000/1011=1010+110/1011得到余数表达式:R(x) =110 所求CRC码为:64 (A)(B)65 2、CRC码的查错表收到的收到的CRC码除以约定的生成多项式码除以约定的生成多项式G(x),,如果余数为如果余数为0则传输无误,否则传输错误,根据所得余数值就可找则传输无误,否则传输错误,根据所得余数值就可找出错误并取反纠正出错误并取反纠正 上表详细说明了上表详细说明了CRC码码1001110在传送时某一位出在传送时某一位出错后的判断与纠正方法错后的判断与纠正方法 [C(X) = 1001、、 G (x) =1011 ]66 3、生成多项式G(x)的确定G(x)是一个约定的除数,用来产生校验码是一个约定的除数,用来产生校验码从检错和纠错的要求出发,它并不是随意从检错和纠错的要求出发,它并不是随意选择的,它应满足下列要求:选择的,它应满足下列要求:任何一位发生错误都应使余数不为任何一位发生错误都应使余数不为0不同位发生错误应使余数不同不同位发生错误应使余数不同余数继续模余数继续模2 除,应使余数循环除,应使余数循环67 4. 4. CRCCRC的译码与纠错的译码与纠错的译码与纠错的译码与纠错n n 将收到的循环校验码用约定的生成多项式将收到的循环校验码用约定的生成多项式将收到的循环校验码用约定的生成多项式将收到的循环校验码用约定的生成多项式GG((((x x))))去除,如果去除,如果去除,如果去除,如果码字无误则余数应为码字无误则余数应为码字无误则余数应为码字无误则余数应为0, 0,如有某一位出错,则余数不为如有某一位出错,则余数不为如有某一位出错,则余数不为如有某一位出错,则余数不为0, 0,不同位数不同位数不同位数不同位数出错余数不同。

      通过例出错余数不同通过例出错余数不同通过例出错余数不同通过例 3.493.49求出其出错模式如表求出其出错模式如表求出其出错模式如表求出其出错模式如表 3.103.10所示、更换所示、更换所示、更换所示、更换不同的待测码字可以证明不同的待测码字可以证明不同的待测码字可以证明不同的待测码字可以证明: :余数与出错位的对应关系是不变的,余数与出错位的对应关系是不变的,余数与出错位的对应关系是不变的,余数与出错位的对应关系是不变的,只与码制和生成多项式有关、因此表只与码制和生成多项式有关、因此表只与码制和生成多项式有关、因此表只与码制和生成多项式有关、因此表 3.103.10给出的关系可作为给出的关系可作为给出的关系可作为给出的关系可作为((((7,47,4)码的判别依对于其他码制或选用其他生成多项式,出错模)码的判别依对于其他码制或选用其他生成多项式,出错模)码的判别依对于其他码制或选用其他生成多项式,出错模)码的判别依对于其他码制或选用其他生成多项式,出错模式将发生变化式将发生变化式将发生变化式将发生变化n n 如果循环码有一位出错,用如果循环码有一位出错,用如果循环码有一位出错,用如果循环码有一位出错,用GG((((x x))))作模作模作模作模2 2除将得到一个不为除将得到一个不为除将得到一个不为除将得到一个不为0 0的的的的余数、如果对余数补余数、如果对余数补余数、如果对余数补余数、如果对余数补1 1个个个个0 0继续除下去我们将发现一个现象继续除下去我们将发现一个现象继续除下去我们将发现一个现象继续除下去我们将发现一个现象; ;各次各次各次各次余数将按表余数将按表余数将按表余数将按表3.103.10顺序循环、例如第七位出错,余数将为顺序循环、例如第七位出错,余数将为顺序循环、例如第七位出错,余数将为顺序循环、例如第七位出错,余数将为OO1OO1,,,,补补补补0 0后再除,第二次余数为后再除,第二次余数为后再除,第二次余数为后再除,第二次余数为010010,以后依次为,以后依次为,以后依次为,以后依次为100100,,,,011,...011,...,反复循环,,反复循环,,反复循环,,反复循环,这是一个有价值的特点。

      如果我们在求出余数不为这是一个有价值的特点如果我们在求出余数不为这是一个有价值的特点如果我们在求出余数不为这是一个有价值的特点如果我们在求出余数不为0 0后,一边对后,一边对后,一边对后,一边对余数补余数补余数补余数补0 0继续做模继续做模继续做模继续做模2 2除,同时让被检错的校验码字循环左移表除,同时让被检错的校验码字循环左移表除,同时让被检错的校验码字循环左移表除,同时让被检错的校验码字循环左移表 3.103.10说明当出现余数(说明当出现余数(说明当出现余数(说明当出现余数(101101)时,出错位也移到)时,出错位也移到)时,出错位也移到)时,出错位也移到A1A1位置、对通过位置、对通过位置、对通过位置、对通过异或门将它纠正后在下一次移位时送回异或门将它纠正后在下一次移位时送回异或门将它纠正后在下一次移位时送回异或门将它纠正后在下一次移位时送回A1A1继续移满一个循环继续移满一个循环继续移满一个循环继续移满一个循环(对(对(对(对7474码共移七次),就得到一个纠正后的码字这样我们就不码共移七次),就得到一个纠正后的码字这样我们就不码共移七次),就得到一个纠正后的码字这样我们就不码共移七次),就得到一个纠正后的码字。

      这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件、当位数增必像海明校验那样用译码电路对每一位提供纠正条件、当位数增必像海明校验那样用译码电路对每一位提供纠正条件、当位数增必像海明校验那样用译码电路对每一位提供纠正条件、当位数增多时循环码校验能有效地降低硬件代价多时循环码校验能有效地降低硬件代价多时循环码校验能有效地降低硬件代价多时循环码校验能有效地降低硬件代价。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.