§ 定点加法、减法运算
一、补码的加减法运算
1、加法
任意两个数的补码之和,等于该两数和的补码。
[X+Y]补= [X]补+[Y]补(mod 2)
两个数不管正负,均用补码表示,符号位应当做数值参加运算,符号位相加所产生的进位要丢掉,结果为补码。
可以证明:
[X+Y]补= [X]补+[Y]补
[X-Y]补= [X]补+[-Y]补
[-Y]补的求法:将[Y]补连同符号位求反加1。
例: X=1001 Y=0101,求 X+Y=?
解: [X]补=01001
[Y]补=00101
[X+Y]补=[X]补+[Y]补=01001+00101 =01110
例: X=1001 Y=-0101,求 X+Y=?
解: [X]补=01001
[Y]补=11011
[X+Y]补=[X]补+[Y]补=01001+11011 =00110
定点运算器——定点加减法
例: X= Y=-,求 X+Y=?
解:
[X]补=0. 1 0 1 1
[Y]补=1. 1 0 1 1
+
0
1
1
0
10.
丢到
1
[X]补+[Y]补=
X+Y=
定点运算器——定点加减法
例: X=-11001 ,Y=-00011,求 X+Y=?
解:
[X]补=1 0 0 1 1 1
[Y]补=1 1 1 1 0 1
+
0
0
1
0
1 1
丢到
1
[X]补+[Y]补=100100
X+Y=-11100
0
由以上两例看到,补码加法的特点:
一是符号位要作为数的一部分一起参加运算。
二是要在模2的意义下相加,即超过2的进位要丢掉!
定点运算器——定点加减法
补码的减法:
[X]补- [Y]补=[X+(-Y)]补=[X]补+[-Y]补
(-Y)的补码称为[Y]补的机器负数,由[Y]补求[-Y]补的过程称为将[Y]补“变补”或对[Y]补求补,由[Y]补求[-Y]补的方法是,不管Y的真值为正或为负,都是将[Y]补的各位连同符号位在内全变反后,最低位加1。
定点运算器——定点加减法
例: X=- Y=-,求 X-Y=?
解:
[X]补=1. 0 1 0 1
[-Y]补=0. 0 1 1 0
+
1
1
0
1
1.
[X-Y]补=
X-Y=-
二、溢出及其判别方法:
在计算机中,由于机器码的尾数通常是给定的(如16位字长,32位字长),因此,在计算机中数的表示范围是有限的,若两数进行加减运算的结果超出了给定的取值范围,就称为溢出。一旦出现溢出,必须及时处理,否则会出现错误。
1、溢出
例1:X=1010 Y=1001 求 X+Y
解: [X]补= 0 1 0 1 0
+ [Y]补= 0 1 0 0 1
1 0 0 1 1
例2:X=-1010 Y=-1011 求 X+Y
解: [X]补= 1 0 1 1 0
+ [Y]补= 1 0 1 0 1
0 1 0 1 1
较大正数相加产生进位,影响符号位
较大的负数对应
较小的正数补码
相加无进位,
符号位自己相加
2、溢出原因:
1)两个正数太大:产生进位而改变了符号位;
2)两个负数绝对值太大:对应的补码太小,不能向符号位产生进位,使符号位相加后,向前产生进位。
1、两异号数相加或两同号数相减是否
会产生溢出?
2、仅当两同号数相加或两异号数相减
时才有可能产生溢出?
问题:
决不会产生溢出
正确
例: X=- Y=-,求 X+Y=?
解:
[X]补=1. 1 0 0
[Y]补=1. 0 1 1
+
1
1
1
10.
丢到
1
两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生。数据向前无进位,符号位向前有进位
3、溢出的判断
1)采用单符号位的判断方法
2-2 运算方法和运算器(二) 来自淘豆网www.taodocs.com转载请标明出处.