补码加减运算公式
- 加法
整数:[A]补+[B]补=[A+B]补
小数:[A]补+[B]补=[A+B]补 - 减法
整数:[A-B]补=[A+(-B)]补=[A]补+[-B]补
小数:[A-B]补=[A+(-B)]补=[A]补+[-B]补 - 注意
连同符号位一起相加,符号位产生的进位自然丢掉 - 例题
设机器字长为8位,含一位符号位,A=15,B=24,用补码求A-B。
解:
A=(15)10=(0001111)2
B=(24)10=(0011000)2
[A]补=0,0001111
[-B]补=1,1101000
[A]补 0,0001111
+[-B]补 1,1101000
——————————————————
1,1110111
[A-B]补=[A+(-B)]补=[A]补+[-B]补=1,1110111
[A-B]原码=-0001001
A-B=-9
溢出判断
概念
在运算过程中如出现大于字长绝对值的现象,称为溢出
正溢:两个正数相加,结果大于机器字长所能表示的最大正数
负溢:两个负数相加,结果小于机器字长所能表示的最小负数
双符号位法
- 理解
- 双符号位法也称为变形补码,在原来的基础上又增加了一位符号位,即双符号位,使补码所能表示的范围又扩大了一倍
- 采用变形补码后,任何正数,两个符号位都是0,任何负数,两个符号位都是1。如果两个数相加后,其结果的符号位出现“01”或者“10”两种组合,表示发生溢出,其中,“01”表示正溢,“10”表示负溢(最高符号位永远表示结果的正确符号)
- 采用变形补码运算时同样要注意:①两个符号位都要看做数码一样参加运算②最高符号位上产生的进位要丢掉
- 举例说明
x=+1100,y=+1000,采用变形补码求x+y。
解:
[x]补=001100
[y]补=001000
[x]补 001100
+[y]补 001000
————————————————
010100
两个符号位出现“01”,发生正溢出。