主要考虑整数加法的溢出情况, 其中:
+wu+_w^u+wu 表示 www 位的无符号加法.
+wt+_w^t+wt 表示 www 位的补码加法.
1. 无符号加法
对满足 0≤x,y≤2w0 \leq x , y \le 2^w0≤x,y≤2w 的 xxx 和 yyy 有:
x+wuy={x+y,..........................x+y<2w.....................正常x+y−2w,..................2w≤x+y≤2w+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+wuy=(x+y)x+_w^u y=(x+y )x+wuy=(x+y) mod 2w2^w2w .
2. 补码加法
对满足 −2w−1≤x,y≤2w−1−1-2^{w-1} \leq x , y \le 2^{w-1}-1−2w−1≤x,y≤2w−1−1 的 xxx 和 yyy 有:
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= \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+wty=U2Tw[(x+y)x+_w^t y=U2T_w[(x+y )x+wty=U2Tw[(x+y) mod 2w]2^w]2w] .
注意:
1. 已知 ∣x∣<2w|x| < 2^w∣x∣<2w, 若 x≥0x\ge0x≥0 , 则 xxx mod 2w2^w2w = xxx, 若 x<0x<0x<0 , 则 xxx mod 2w2^w2w = x+2wx+2^wx+2w.
2. 对满足 Tminw≤x,y≤TmaxwTmin_w\le x,y \le Tmax_wTminw≤x,y≤Tmaxw的 x,yx,yx,y , 令 s=x+wtys= x+_w^tys=x+wty ,
当且仅当 x>0,y>0x>0,y>0x>0,y>0 , 但 s≤0s\le0s≤0 时, 计算 sss 发生了正溢出 ,
当且仅当 x<0,y<0x<0,y<0x<0,y<0 , 但 s≥0s\ge0s≥0 时, 计算 sss 发生了负溢出 .