补码加减法运算(计算机组成原理).ppt
25页计算机组成原理计算机组成原理1计计 算算 机机 组组 成成 原原 理理Monday, August 26, 2024补码加减法运算补码加减法运算计算机组成原理计算机组成原理2加法规则:加法规则: 先判符号位,若相同,绝对值相加,结果符号不变先判符号位,若相同,绝对值相加,结果符号不变; ; 若不同,则作减法,若不同,则作减法, | |大大| - || - |小小| |,结果符号与,结果符号与| |大大| |相同减法规则:减法规则: 两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取两个原码表示的数相减,首先将减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算反后的减数按原码加法进行运算补码加减法运算补码加减法运算 1.1.原码加原码加/ /减法运算减法运算计算机组成原理计算机组成原理3补码加法的公式补码加法的公式: :[ [ x x ] ]补补++[ [ y y ] ]补补==[ [ x x++y y ] ]补补 (mod 2) 在模在模2 2意义下意义下, ,任意两数的补码之和等于该两数之和的补码任意两数的补码之和等于该两数之和的补码。
这是补码加法的理论基础这是补码加法的理论基础2.2.补码加法运算补码加法运算特点:特点:不需要事先判断符号,符号位与码值位一起参加运算不需要事先判断符号,符号位与码值位一起参加运算 符号位相加后若有进位,则舍去该进位数字符号位相加后若有进位,则舍去该进位数字补码加法的特点:补码加法的特点: ((1)符号位要作为数的一部分一起参加运算;)符号位要作为数的一部分一起参加运算; ((2)在模)在模2的意义下相加,即大于的意义下相加,即大于2的进位要丢掉的进位要丢掉其结论也适用于定点整数其结论也适用于定点整数计算机组成原理计算机组成原理4例例: : x x==0.1001, 0.1001, y y==0.0101, 0.0101, 求求 x x++y y解解: [: [x x] ]补补==0.1001, [0.1001, [y y] ]补补==0.01010.0101 [ [x x] ]补补 0. 1 0 0 10. 1 0 0 1 ++ [ [y y] ]补补 0. 0 1 0 1 0. 0 1 0 1 [ [x x++y y ] ]补补 0. 1 1 1 00. 1 1 1 0 所以 所以 x x++y y=+=+0.1110 0.1110 例例: : x x=+=+0.1011, 0.1011, y y=-=-0.0101, 0.0101, 求求 x x++y y。
所以 所以 x x++y y==0.01100.0110解解: [: [x x] ]补补==0.1011,0.1011, [ [y y] ]补补==1.1011 1.1011 [ [x x] ]补补 0. 1 0 1 10. 1 0 1 1++[ [y y] ]补补 1. 1 0 1 11. 1 0 1 1 [ [x x++y y] ]补补 1 1 0. 0 1 1 0 0. 0 1 1 0计算机组成原理计算机组成原理53.3.补码减法补码减法减法运算要设法化为加法完成减法运算要设法化为加法完成 补码减法运算的公式:补码减法运算的公式: [ [ x x--y y ] ]补补==[ [ x x ] ]补补--[ [ y y ] ]补补==[ [ x x ] ]补补++[ [--y y ] ]补补公式证明:公式证明: 只要证明只要证明[ [––y y] ]补补== ––[ [ y y] ]补补, , 上式即得证。
上式即得证 ∵∵ [ [x x++y y] ]补补==[ [x x] ]补补++[ [ y y] ]补补 (mod 2)(mod 2) 令令 y= y= -- x x ∴∴ [0][0]补 补 ==[ [x x] ]补补 + [ + [ -- x x] ]补补 故故 [ [--x]x]补补=-=-[ x][ x]补补 (mod 2)(mod 2) 证明:证明:计算机组成原理计算机组成原理6例例: : x x=+=+0.1101, 0.1101, y y=+=+0.0110, 0.0110, 求求 x x--y y解解: : [ [x x] ]补补==0.11010.1101 [ [ y y] ]补补==0.01100.0110 [ -[ -y y] ]补补==1.10101.1010 ∴∴ x x--y y=+=+0.01110.0111解解:: [x][x]补补=1.0011 [y]=1.0011 [y]补补=1.1010 [-y]=1.1010 [-y]补补=0.0110=0.0110 [x] [x]补补 1.0 0 1 11.0 0 1 1 + [-y] + [-y]补补 0.0 1 1 00.0 1 1 0 [ [x-yx-y] ]补补 1.1 0 0 1 1.1 0 0 1 例:例: x= -0.1101x= -0.1101,,y= -0.0110y= -0.0110,求,求x-yx-y=?=?∴∴x x --y = 0.0111y = 0.0111[ [x x] ]补补 0.1 1 0 10.1 1 0 1++[-[-y y] ]补补 1.1 0 1 01.1 0 1 0 [ [x x--y y] ]补补 1 1 0.0 1 1 1 0.0 1 1 1 计算机组成原理计算机组成原理7溢出及与检测方法溢出及与检测方法 在定点小数机器中在定点小数机器中, ,数的表示范围为数的表示范围为| |xx|<1|<1。
在运算过程中如出现大于在运算过程中如出现大于1 1的的现象现象, ,称为称为 ““溢出溢出””机器定点小数表示机器定点小数表示上溢上溢下溢下溢1.1.概念概念计算机组成原理计算机组成原理8 解解:: [x][x]补补=0.1011=0.1011 [y] [y]补补=0.1001=0.1001 [x] [x]补补 0. 1 0 1 10. 1 0 1 1 + + [y] [y]补补 0. 1 0 0 1 0. 1 0 0 1 [ [x+yx+y] ]补补 1 1. 0 1 0 0. 0 1 0 0例:例:x=+0.1011, y=+0.1001, x=+0.1011, y=+0.1001, 求求x+yx+y。
例:例:x= -0.1101, y= -0.1011, x= -0.1101, y= -0.1011, 求求x+yx+y 解解:: [x][x]补补=1.0011=1.0011 [y] [y]补补=1.0101=1.0101 [x] [x]补补 1. 0 0 1 11. 0 0 1 1 + + [y][y]补补 1. 0 1 0 11. 0 1 0 1 [ [x+yx+y] ]补补 0 0. 1 0 0 0. 1 0 0 0 两个正数相加的结果成为负数,这显然是错误的两个正数相加的结果成为负数,这显然是错误的 两个负数相加的结果成为正数,这同样是错误的两个负数相加的结果成为正数,这同样是错误的。
计算机组成原理计算机组成原理9 发生错误的原因,是因为运算结果超出编码所能发生错误的原因,是因为运算结果超出编码所能表示的数字大小表示的数字大小两个两个正数正数相加相加: : 结果大于机器所能表示的最大正数,称为结果大于机器所能表示的最大正数,称为上溢上溢;;两个两个负数负数相加:结果小于机器所能表示的最小负数,称为相加:结果小于机器所能表示的最小负数,称为下溢下溢机器定点小数表示机器定点小数表示上溢上溢下溢下溢计算机组成原理计算机组成原理102.2.溢出的检测方法溢出的检测方法 [x][x]补补 0 0. 1 0 1 1. 1 0 1 1 + + [y] [y]补补 0 0. 1 0 0 1 . 1 0 0 1 [ [x+yx+y] ]补补 1 1. 0 1 0 0. 0 1 0 0 [x][x]补补 1 1. 0 0 1 . 0 0 1 1 1 + + [y] [y]补补 1 1. 0 . 0 1 0 11 0 1 [ [x+yx+y] ]补补 0 0. . 1 0 0 01 0 0 0溢出逻辑表达式为:溢出逻辑表达式为: V V==S S1 1 S S2 2 S Sc c + + S S1 1 S S2 2 S Sc c (1)(1)单符号位法单符号位法FAVz0y0x0判断电路判断电路判断电路计算机组成原理计算机组成原理11 一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就会发生混乱。
如果将符号位扩充为两位会发生混乱如果将符号位扩充为两位( (S Sf f1 1、、S Sf f2 2) ),其所能表示的信息量将随,其所能表示的信息量将随之扩大,既能判别是否溢出,又能指出结果的符号之扩大,既能判别是否溢出,又能指出结果的符号 (2)(2)双符号位法双符号位法双符号位法双符号位法也称为也称为““变形补码变形补码””或或““模模4 4补码补码”” 变形补码定义:变形补码定义:[ [x x] ]补补= =x x 0 0 x 为模的加法,即最高符号位上产生的进位要丢掉模模4 4补码加法公式:补码加法公式:[ [x x] ]补补+[ +[ y y] ]补补=[=[x+yx+y] ]补补 ((mod 4)mod 4)采用变形补码后数的表示:采用变形补码后数的表示:计算机组成原理计算机组成原理13 S Sf f1 1S Sf f2 2 ==00 00 结果为正数,无溢出结果为正数,无溢出01 01 结果正溢结果正溢10 10 结果负溢结果负溢11 11 结果为负数,无溢出结果为负数,无溢出即:即:结果的两个符号位的代码不一致时,表示溢出结果的两个符号位的代码不一致时,表示溢出; ; 两个符号位的代码一致时,表示没有溢出两个符号位的代码一致时,表示没有溢出 不管溢出与否,最高符号位永远表示结果的正确符号不管溢出与否,最高符号位永远表示结果的正确符号溢出逻辑表达式为:溢出逻辑表达式为:V V==S Sf f1 1⊕⊕S Sf f2 2式中:式中:S Sf1f1和和S Sf2f2分别为最高符号位和第二符号位,此逻辑表达式可用异或门实现。 分别为最高符号位和第二符号位,此逻辑表达式可用异或门实现双符号位的含义如下:双符号位的含义如下:计算机组成原理计算机组成原理14 解解:: [x][x]补补= =0000.1100.1100 [y] [y]补补= =0000.1000.1000 [x] [x]补补 0 0. 1 1 0 00 0. 1 1 0 0 + + [y] [y]补补 0 0. 1 0 0 00 0. 1 0 0 0 0 10 1. 0 1 0 0. 0 1 0 0 符号位出现符号位出现““0101””,表示已溢出,正溢即结果大于,表示已溢出,正溢即结果大于+1+1例例 x= +0.1100, y= +0.1000, x= +0.1100, y= +0.1000, 求求x+yx+y。 解解:: [x][x]补补=11.0100=11.0100 [y] [y]补补=11.1000=11.1000 [x] [x]补补 1 1. 0 1 0 01 1. 0 1 0 0 + + [y] [y]补补 1 1. 1 0 0 01 1. 1 0 0 0 1 01 0. 1 1 0 0. 1 1 0 0符号位出现符号位出现““1010””,表示已溢出,负溢出即结果小于,表示已溢出,负溢出即结果小于-1-1例例 x= -0.1100, y= -0.1000, x= -0.1100, y= -0.1000, 求求x+yx+y 计算机组成原理计算机组成原理15从上面例中看到:从上面例中看到: 当最高有效位有进位而符号位无进位时当最高有效位有进位而符号位无进位时, ,产生上溢;产生上溢; 当最高有效位无进位而符号位有进位时当最高有效位无进位而符号位有进位时, ,产生下溢。 产生下溢 (简单地说是正数相加为负数或负数相加为正数则产生溢出)(简单地说是正数相加为负数或负数相加为正数则产生溢出) 故溢出逻辑表达式为:故溢出逻辑表达式为: V V==C Cf f⊕⊕C Co o 其中其中C Cf f为符号位产生的进位为符号位产生的进位,C,Co o为最高有效位产生的进位为最高有效位产生的进位 此逻辑表达式也可用异或门实现此逻辑表达式也可用异或门实现3)(3)利用进位值的判别法利用进位值的判别法( (单符号位单符号位) ) [x][x]补补 0. 1 1 0 00. 1 1 0 0 +[y] +[y]补补 0. 1 0 0 00. 1 0 0 0 1 1. 1 0 0 0. 1 0 0 0 [x][x]补补 1.0 1 0 01.0 1 0 0 +[y] +[y]补补 1.1 0 0 01.1 0 0 0 0 0.1 1 0 0.1 1 0 0计算机组成原理计算机组成原理16FAFAz1z0Vc1c0y1x1y0x0FAFAVz1c0c1z0x1y1y0x0V==C1⊕⊕Co V==Sf1⊕⊕Sf2判断电路判断电路计算机组成原理计算机组成原理17基本的二进制加法基本的二进制加法/ /减法器减法器加法运算:加法运算:A Ai i + B+ Bi i + + C Ci i = S= Si i (C(Ci+1i+1) )加数加数进位输入进位输入和和进位输出进位输出一位全加器真值表一位全加器真值表输入输入输出输出A Ai iB Bi iC Ci iS Si iC Ci i++1 10 00 00 00 00 00 00 01 11 10 00 01 10 01 10 00 01 11 10 01 11 10 00 01 10 01 10 01 10 01 11 11 10 00 01 11 11 11 11 11 1逻辑方程逻辑方程S Si i==A Ai i⊕B⊕Bi i⊕C⊕Ci iC Ci i++1 1==A Ai iB Bi i++B Bi iC Ci i++C Ci iA Ai i1.1.一位全加器一位全加器计算机组成原理计算机组成原理18逻辑方程逻辑方程S Si i==A Ai i⊕B⊕Bi i⊕C⊕Ci iC Ci i++1 1= = A Ai iB Bi i++B Bi iC Ci i++C Ci iA Ai i逻辑电路(一位全加器)逻辑电路(一位全加器)常用的全加器逻辑电路常用的全加器逻辑电路F AC i+1i+1C i iS i iA i iB i i逻辑符号逻辑符号计算机组成原理计算机组成原理192.n2.n位的行波进位加减器位的行波进位加减器 n n个个1 1位的全加器位的全加器(FA)(FA)可级联成一个可级联成一个n n位的行波进位加减器。 位的行波进位加减器计算机组成原理计算机组成原理20T T被定义为相应于被定义为相应于单级逻辑电路的单级逻辑电路的单位门延迟单位门延迟T T通常采用一个通常采用一个““与非与非””门或一个门或一个““或非或非””门的时门的时间延迟来作为度间延迟来作为度量单位3.n3.n位的行波进位加法器的问题位的行波进位加法器的问题时间延迟时间延迟3T3TXNORXNOR异或非异或非3T3TXOTXOT异或异或2T2TOROR或或2T2TANDAND与与T TNOTNOT非非T TNORNOR或非或非T TNANDNAND与非与非时间延迟时间延迟逻辑符号(正逻辑)逻辑符号(正逻辑)门的功能门的功能门的名称门的名称典型门电路的逻辑符号和延迟时间典型门电路的逻辑符号和延迟时间接线逻辑接线逻辑( (与或非与或非) )AOIAOIT+TT+TRCRC计算机组成原理计算机组成原理21(1)(1)对对一位全加器一位全加器(FA)(FA)来说,来说,S Si i的时间延迟为的时间延迟为6T6T( (每级异或门延迟每级异或门延迟3T)3T);; C Ci i++1 1的时间延迟为的时间延迟为5T5T3T3T3T3TT TT T计算机组成原理计算机组成原理22(2)(2)n n位行波进位加法器位行波进位加法器的延迟时间的延迟时间t ta a为:为: • • 9T9T为最低位上的两极为最低位上的两极““异或异或””门再加上溢出门再加上溢出““异或异或””门的总时间;门的总时间; • • 2T 2T为每级进位链的延迟时间。 为每级进位链的延迟时间t ta a==n n··2 2T T++9 9T T==(2(2n n++9)9)T T考虑溢出检测时,有:考虑溢出检测时,有:当不考虑溢出检测时,有:当不考虑溢出检测时,有:t ta a==( (n-1)n-1)··2 2T T++9 9T T tata为在加法器的输入端输入加数和被加数后为在加法器的输入端输入加数和被加数后, ,在最坏的情况下加法器输出在最坏的情况下加法器输出端得到稳定的求和输出所需要的最长时间端得到稳定的求和输出所需要的最长时间 tata越小越好越小越好计算机组成原理计算机组成原理23缺点缺点::(1)(1)串行进位串行进位, ,它的运算时间长;它的运算时间长;(2)(2)只能完成加法和减法两种操作而不能完成逻辑操作只能完成加法和减法两种操作而不能完成逻辑操作多功能算术多功能算术/ /逻辑运算单元逻辑运算单元(ALU):(ALU): 不仅不仅具有多种算术运算和逻辑运算具有多种算术运算和逻辑运算的功能;的功能;而且具有而且具有先行进位先行进位逻辑从而能实现高速运算从而能实现高速运算由一位全加器由一位全加器(FA)(FA)构成的行波进位加法器构成的行波进位加法器: :计算机组成原理计算机组成原理24十进制加法器十进制加法器 十进制加法器可由十进制加法器可由BCDBCD码码( (二-十进制码二-十进制码) )来设计来设计, ,它可以在二进制加法器它可以在二进制加法器的基础上加上适当的的基础上加上适当的““校正校正””逻辑逻辑来实现。 来实现 7 0 1 1 17 0 1 1 1 + 6 + 0 1 1 0 + 6 + 0 1 1 0 1 3 1 1 0 1 1 3 1 1 0 1 ((= D= D)) + 0 1 1 0+ 0 1 1 0 1 0 0 1 1 1 0 0 1 1 ((= 13= 13)) 3 0 0 1 13 0 0 1 1 + 5 + 0 1 0 1 + 5 + 0 1 0 1 8 1 0 0 0 8 1 0 0 0 X+Y+C<10X+Y+C<10不调整不调整X+Y+C>10X+Y+C>10调整调整计算机组成原理计算机组成原理25故:故: 1. 1. 和为和为1010~~1515时,加时,加6 6校正;校正; 2. 2. 和数有进位时,加和数有进位时,加6 6校正。 校正和数和数(4(4位位) )有进位有进位调整调整 28 0010 100028 0010 1000 + 9 + 9 ++ 0000 10010000 1001 37 0011 0001 37 0011 0001 ((=31=31)) ++ 0000 01100000 0110 0011 0111 (=37) 0011 0111 (=37)。





