补码加减法运算
- 格式:ppt
- 大小:1.51 MB
- 文档页数:37
补码的加减及溢出判断、加法器补码的加减法:加法:整数: [A]补 + [B]补 = [A+B]补(mod 2^(n+1))⼩数: [A]补 + [B]补 = [A+B]补(mod 2)减法:整数: [A-B]补 = [A]补 + [-B]补(mod 2^(n+1))⼩数: [A-B]补 = [A]补 + [-B]补(mod 2)补码加法运算溢出判断三种⽅法:[⽅法⼀]Xf、Yf分别两个数的符号位,Zf为运算结果符号位。
当Xf =Yf =0(两数同为正),⽽Zf=1(结果为负)时,负溢出;当出现Xf =Yf =1(两数同为负),⽽Zf=0(结果为正),正溢出.[⽅法⼆](就是下⽂加法器⾥的溢出标志OF判断:OF=Cn (异或) Cn-1)Cs表⽰符号位的进位,Cp表⽰最⾼数值位进位,⊕表⽰异或。
若 Cs⊕Cp =0 ,⽆溢出;若 Cs⊕Cp =1 ,有溢出。
[⽅法三]⽤变形补码进⾏双符号位运算(正数符为00,负数符号以11)若运算结果的符号位为"01",则正溢;若结果双符号为10,则负溢出;若结果的双符号位为00或11,⽆溢出加法器:溢出标志OF:OF=Cn (异或) Cn-1符号标志SF:SF=Fn-1零标志ZF=1 当且仅当F=0;进位/借位标志CF:CF=Cout (异或) SUB / CF=Cout (异或)Cin做加法时,主要判断是否溢出⽆符号加法溢出条件:CF=1带符号加法溢出条件:OF=1带符号溢出判断: ( OF=1 )(1) 最⾼位和次⾼位的进位不同(2) 和的符号位和加数的符号位不同。
补码计算规则补码是计算机中表示有符号整数的一种方式。
在计算机内部,所有的数字都以二进制形式存储和处理。
补码的出现是为了解决二进制表示中正负数的表示问题。
补码计算规则是描述补码运算的一套规则,它包括了加法、减法、乘法和除法等基本运算。
一、补码的定义在补码表示中,最高位是符号位,0表示正数,1表示负数。
其余位表示数值大小。
对于一个给定的位数,补码可以表示的最大值为2^(n-1)-1,最小值为-2^(n-1)。
二、补码的表示方法正数的补码与原码相同,负数的补码由其原码取反后再加1得到。
例如,对于一个8位的补码,+3的原码为00000011,补码也为00000011;-3的原码为10000011,补码为11111101。
三、补码的加法运算补码的加法运算可以分为四种情况:正数加正数、正数加负数、负数加正数、负数加负数。
1. 正数加正数两个正数相加,只需要将它们的补码按位相加即可。
若相加结果超过了补码的表示范围,则会发生溢出。
2. 正数加负数正数加负数可以转换为正数减去负数的补码相加。
例如,+3加上-2,可以先计算3减去2的补码,得到00000011 - 11111110 = 00000001,即1。
3. 负数加正数负数加正数也可以转换为正数减去负数的补码相加。
例如,-3加上2,可以先计算3减去2的补码,得到00000011 - 00000010 = 00000001,即1。
4. 负数加负数两个负数相加,可以先将它们的绝对值相加,再取其补码。
例如,-3加上-2,先计算3加上2的补码,得到00000011 + 00000010 = 00000101,再取其补码,即11111011。
四、补码的减法运算补码的减法运算可以通过加上减数的补码来实现。
例如,计算3减去2,可以将2取反后加1得到其补码,即11111110 + 00000001 = 11111111,再与3的补码相加,得到00000011 + 11111111 = 00000010,即2。
数字逻辑概论华中科技大学罗杰补码的加减运算加减运算是计算机中最基本的运算。
加减运算可以用原码、补码、BCD码等各种码制进行。
补码运算可以把减法转换为加法,现代计算机中均采用补码进行加减运算。
◆假设X和Y均为正数,则补码的运算规则如下:[ X ]补+ [ Y ]补= [ X+Y ]补(mod M)两个数的补码之和等于两数之和的补码。
[ X ]补-[ Y ]补= [ X ]补+ [ -Y ]补= [ X-Y ]补(mod M)两个数的补码之差等于两数之差的补码。
◆注意:参与运算的操作数均为补码,运算的结果仍然以补码表示。
运算时,符号位和数值位按同样的规则参加运算,结果的符号位由运算得出。
补码总是对确定的模而言,如果运算结果超过了模,则应将模(即进位)丢掉才能得到正确结果。
求15 –13 = ?(用补码)0000110100001111(15)(13)( 2 )000000100000111111110011+(15)补(-13)补( 2)补1进位111000000101111舍弃进位∵(15–13)补= (15 )补–(13)补= (15 )补+ (–13)补直接做减法运算转换为补码做加法运算◆注意:在进行二进制补码的加法运算时,被加数与加数的位数要相等,即让两个二进制数补码的符号位对齐。
两个二进制数的补码要采用相同的位数表示。
求13 –15 = ?(用补码)1111000100001101+(13)补(-15)补(-2)补0进位00011111110010∵(13-15 )补= (13 )补+ (–15)补求–13 –15 = ?(用补码)1111000111110011+(-13)补(-15)补(-28)补0进位11011100100111因为(-13-15 )补= (-13 )补+ (–15)补1舍弃进位求125+58 = ?(用补码)0011101001111101+(125)补( 58)补(183)补进位111101101111因为(125+58 )补= (125)补+ (58)补错误原因是:8位有符号数所能表示的补码数的最大值为127.这里,183 > 127,导致结果错误。
一.补码的加、减运算在计算机中,通常总是用补码完成算术的加减法运算。
其规则是:[X+Y]补= [X]补+ [Y]补,[X-Y]补= [X]补- [Y]补= [X]补+ [-Y]补这表明,有了补码表示的被加(减)数和加(减)数,要完成计算补码表示的二数之和或二数之差,只需用二数的补码直接执行加减运算即可,符号位与数值位同等对待,一起参加运算,若运算结果不溢出,即不超出计算机所能表示的范围,则结果的符号位和数值位同时为正确值。
此外,还可以看到,实现减运算时,用的仍是加法器线路,把减数的负数的补码送加法器即可。
在有了一个数的补码之后,求这个数的负数的补码,是简单地把这个数的补码逐位取反再在最低位加1即可得到。
例如,[Y]补=101101,则[-Y]补=010011,这大大简化了加减运算所用的线路和加减运算的实现算法。
下面的问题是如何检查加减运算中的溢出问题。
通常有三种表述方式(说法):(1) 两个符号相同的补码数相加,如果和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出。
这种判别方法比较复杂,要区别加还是减两种不同运算情况,还要检查结果的符号与其中一个操作数的符号的同异,故很少使用;(2) 两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出。
(3) 在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不同(01或10)则是溢出。
01表明两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10表明两个负数相加,结果小于机器所能表示的最小负数,称为"下溢";双符号位的高位符号位,不管结果溢出否,均是运算结果正确的符号位,这个结论在乘法运算过程中是很有实际意义的。
请注意,在采用双符号位的方案中,在寄存器和内存储器存储数据时,只需存一位符号,双符号位仅用在加法器线路部分。
补码加减法运算
首先,我们来了解一下补码的概念。
补码是将一个负数的绝对值按位取反,并在最低位加1、例如,对于8位二进制数,补码的规则如下:正数的补码是它本身。
负数的补码是将其绝对值的二进制表示按位取反,并在最低位加1
下面我们将分别介绍补码加法和补码减法的运算规则。
补码加法运算:
1.将两个补码数进行按位相加,从低位开始,逐位相加。
2.如果两个二进制位相加的结果为1和1,则将结果写成0,并向上一位进位1
3.最后,把进位的1加到结果的最高位。
例如,我们进行8位补码加法运算:
例如计算3+(-5):
按位相加:
--------------
将结果的1加到最高位:
--------------
补码减法运算:
补码减法可以通过补码加法来实现。
要计算A-B,首先要将B取反,即得到-B的补码,然后将A和-B的
补码进行按位相加。
例如,计算5-3:
按位相加:
--------------
将结果的1加到最高位:
--------------
总结:
补码加减法运算是计算机中常用的一种运算方法,可以通过按位相加
或相减的方式快速计算。
与其它计算方法相比,补码加减法具有简单、高
效的特点,并且可以统一处理正负数的运算。
因此,在计算机组成原理中,补码加减法是一个非常重要的概念。