您的位置:首页 > 理论基础

定点整数加减法

2017-09-23 18:59 246 查看
1.补码加法的性质:补码的和等于和的补码。

进行补码加法时,符号位参与运算。最后把超出的进位丢掉。

2.补码减法依然转化为加法来做。一个补码表示的数的相反数,可以“逐位取反再加一”得到。

3.溢出(overflow)检测:
正+正<0
,或者
负+负>0
,为溢出。有两种检测方法:

(1)双符号位变形补码法。

设n位二进制有符号整数,则结果利用n+1位整数表示。

结果保留两位符号位(第n和n+1位),两个符号位不一致 ,则发生了溢出。符号位
01
则为正溢出,符号位
10
为负溢出。因为“正+正”,两个加数第n位都不可能为1,最多只能在第n位得到1,因此符号位出现
01
是正溢出。符号位
10
同理。

有符号整数的符号位实际是使用的负权,故也影响数的绝对值大小。一般认为最高位是符号位。

(2)单符号位法。

此方法检测最高符号位和最高位产生的进位。是否溢出取决于结果符号位和进位的异或值。

本质上两种方法是一致的。

4.加法器的电路表示可以由n位全加器,n个异或门构成的控制电路(控制做加法还是减法,减法就用异或门全部取反,并给最低位全加器的进位输入设置为
1
)和一个溢出检测的异或门构成。分析延迟,应该尽可能考虑可以并行的部分。

5.C , Java会忽略溢出,并不会产生异常。如果需要在C中检测溢出,应当考虑实际结果的范围。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息