计算机组成原理 运算方法:定点数加减

来源:互联网 发布:js校验身份证号 编辑:程序博客网 时间:2024/04/30 15:34

定点数加减

目前计算机普遍使用补码实现定点数的加减运算。

1.加减运算方法:
根据补码的设计规则,任意的绝对值相同的负数和正数,负数是正数的反码加1,所以绝对值相同的负数和正数相加,刚刚好结果就是为全0(最高位进一位,抛弃)。然后对照下补码表,可以发现基于这种设计,两数相加时可以直接将符号位也参与运算,得出的结果也包含符号位。

2.溢出判断:
(1)单符号位判溢方法
相加溢出的情况只有两种:
正数和正数相加,结果为负数,发生溢出。
负数和负数相加,结果为正数,发生溢出。

为什么正数和负数相加不会溢出呢?是因为正数和负数的最值的绝对值都是相同的,正负相加结果一定在绝对值之内。

相减只是将加数取补码再相加,所以知道相加溢出就够了。

(2)进位判溢方法(单符号位)
由补码表观察可以知道:
不溢出的情况:
一个绝对值较大的负数和绝对值较小的正数相加,最高有效位(即最高的数值位)不会发生溢出,因此符号位也没有进位。
一个绝对值较小的负数和绝对值较大的正数相加,最高有效位溢出,且使得符号位由1变10(0)进位。
溢出的情况:
上面已经知道:
正数和正数相加,结果为负数,发生溢出。→这种情况是最高有效位进位,而符号位由0变1无进位。
负数和负数相加,结果为正数,发生溢出。→这种情况是最高有效位不进位,而符号位由1变10(0)进位。
所以当最高有效位和符号位的进位不同时,就表明发生了溢出。

(3)双符号位进位判溢方法
采用双符号位(00、11)进行相加,上面已经知道:
所以当最高有效位和符号位的进位不同时,就表明发生了溢出。
→符号位进位,最高有效位不进位就变成了11+11=10(110)。此时为负溢出。
→符号位不进位,最高有效位进位就变成了00+1=01。此时为正溢出。

0 0
原创粉丝点击