如何判断两个整数相加减是否溢出

一、两个无符号整数相加减


对于两个w位宽的无符号整数来说,其能够表示的范围在0<=x<=2w次方-1。若溢出,那么这两个数相加的结果超过了该范围,则进位会被舍去,结果将小于运算中的任何一个整数。

如果两个无符号整数相减,若溢出,则结果将位于这两个整数之间。



二、两个有符号整数相加减


对于两个w位宽的有符号整数来说,其能够表示的范围在-2w-1次方<=x<=2w-1次方-1。若溢出,那么这两个数相加的结果超过了该范围,则进位会被舍去,结果将位于这个范围之内。
如果两个有符号整数相减,值得注意的是,作为减数的数的值为-128时(我们这里取整数为8 bits),结果是否溢出的判断则需特别处理。比如,-1-(-128),理论结果应该为127,结果未溢出;但是,实际上,+128(-(-128)的等效值)已经超出了127的最大表示范围了,已经溢出,不过,因为是中间结果,被忽略掉了罢了。事实上,溢出是存在的。所以,针对这类情况,我们在做是否溢出判断时,得格外小心。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值