主要考虑整数加法的溢出情况, 其中:
+ w u +_w^u +wu 表示 w w w 位的无符号加法.
+
w
t
+_w^t
+wt 表示
w
w
w 位的补码加法.
1. 无符号加法
对满足
0
≤
x
,
y
≤
2
w
0 \leq x , y \le 2^w
0≤x,y≤2w 的
x
x
x 和
y
y
y 有:
x
+
w
u
y
=
{
x
+
y
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
+
y
<
2
w
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
正
常
x
+
y
−
2
w
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
w
≤
x
+
y
≤
2
w
+
1
.
.
.
.
.
.
.
.
.
溢
出
x+_w^u y= \begin {cases} x + y , ..........................x+y<2^w .....................正常\\ x+y-2^w,..................2^w \leq x+y \leq 2^{w+1}.........溢出\\ \end{cases}
x+wuy={x+y,..........................x+y<2w.....................正常x+y−2w,..................2w≤x+y≤2w+1.........溢出
也可以缩减为
x
+
w
u
y
=
(
x
+
y
)
x+_w^u y=(x+y )
x+wuy=(x+y) mod
2
w
2^w
2w .
2. 补码加法
对满足
−
2
w
−
1
≤
x
,
y
≤
2
w
−
1
−
1
-2^{w-1} \leq x , y \le 2^{w-1}-1
−2w−1≤x,y≤2w−1−1 的
x
x
x 和
y
y
y 有:
x
+
w
t
y
=
{
x
+
y
−
2
w
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
w
≤
x
+
y
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
正
溢
出
x
+
y
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
−
2
w
−
1
≤
x
,
y
<
2
w
−
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
正
常
x
+
y
+
2
w
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
+
y
<
−
2
w
−
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
负
溢
出
x+_w^t y= \begin {cases} x + y -2^w, ................2^w\leq x+y .............................正溢出\\ x + y , ....................... -2^{w-1} \leq x , y < 2^{w-1} ..............正常\\ x+y+2^w,................x+y < -2^{w-1}.......................负溢出\\ \end{cases}
x+wty=⎩⎪⎨⎪⎧x+y−2w,................2w≤x+y.............................正溢出x+y,.......................−2w−1≤x,y<2w−1..............正常x+y+2w,................x+y<−2w−1.......................负溢出
也可以缩减为
x
+
w
t
y
=
U
2
T
w
[
(
x
+
y
)
x+_w^t y=U2T_w[(x+y )
x+wty=U2Tw[(x+y) mod
2
w
]
2^w]
2w] .
注意:
1. 已知
∣
x
∣
<
2
w
|x| < 2^w
∣x∣<2w, 若
x
≥
0
x\ge0
x≥0 , 则
x
x
x mod
2
w
2^w
2w =
x
x
x, 若
x
<
0
x<0
x<0 , 则
x
x
x mod
2
w
2^w
2w =
x
+
2
w
x+2^w
x+2w.
2. 对满足
T
m
i
n
w
≤
x
,
y
≤
T
m
a
x
w
Tmin_w\le x,y \le Tmax_w
Tminw≤x,y≤Tmaxw的
x
,
y
x,y
x,y , 令
s
=
x
+
w
t
y
s= x+_w^ty
s=x+wty ,
当且仅当
x
>
0
,
y
>
0
x>0,y>0
x>0,y>0 , 但
s
≤
0
s\le0
s≤0 时, 计算
s
s
s 发生了正溢出 ,
当且仅当
x
<
0
,
y
<
0
x<0,y<0
x<0,y<0 , 但
s
≥
0
s\ge0
s≥0 时, 计算
s
s
s 发生了负溢出 .