整数加法溢出原理(五)

主要考虑整数加法的溢出情况, 其中:

+ 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 0x,y2w x x x y y y 有:
x + w u y = { x + y , . . . . . . . . . . . . . . . . . . . . . . . . . . x + y &lt; 2 w . . . . . . . . . . . . . . . . . . . . . 正 常 x + y − 2 w , . . . . . . . . . . . . . . . . . . 2 w ≤ x + y ≤ 2 w + 1 . . . . . . . . . 溢 出 x+_w^u y= \begin {cases} x + y , ..........................x+y&lt;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+y2w,..................2wx+y2w+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 2w1x,y2w11 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 &lt; 2 w − 1 . . . . . . . . . . . . . . 正 常 x + y + 2 w , . . . . . . . . . . . . . . . . x + y &lt; − 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 &lt; 2^{w-1} ..............正常\\ x+y+2^w,................x+y &lt; -2^{w-1}.......................负溢出\\ \end{cases} x+wty=x+y2w,................2wx+y.............................x+y,.......................2w1x,y<2w1..............x+y+2w,................x+y<2w1.......................
也可以缩减为 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 ∣ &lt; 2 w |x| &lt; 2^w x<2w, 若 x ≥ 0 x\ge0 x0 , 则 x x x mod 2 w 2^w 2w = x x x, 若 x &lt; 0 x&lt;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 Tminwx,yTmaxw x , y x,y x,y , 令 s = x + w t y s= x+_w^ty s=x+wty ,
 
   当且仅当 x &gt; 0 , y &gt; 0 x&gt;0,y&gt;0 x>0,y>0 , 但 s ≤ 0 s\le0 s0 时, 计算 s s s 发生了正溢出 ,
 
   当且仅当 x &lt; 0 , y &lt; 0 x&lt;0,y&lt;0 x<0,y<0 , 但 s ≥ 0 s\ge0 s0 时, 计算 s s s 发生了负溢出 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值