您的位置:首页 > 其它

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

2016-03-24 14:17 363 查看
一、两个无符号整数相加减

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

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

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

对于两个w位宽的有符号整数来说,其能够表示的范围在-2w-1次方<=x<=2w-1次方-1。若溢出,那么这两个数相加的结果超过了该范围,则进位会被舍去,结果将位于这个范围之内。
如果两个有符号整数相减,值得注意的是,作为减数的数的值为-128时(我们这里取整数为8 bits),结果是否溢出的判断则需特别处理。比如,-1-(-128),理论结果应该为127,结果未溢出;但是,实际上,+128(-(-128)的等效值)已经超出了127的最大表示范围了,已经溢出,不过,因为是中间结果,被忽略掉了罢了。事实上,溢出是存在的。所以,针对这类情况,我们在做是否溢出判断时,得格外小心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: