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

来源:互联网 发布:win8网络连接图标不见 编辑:程序博客网 时间:2024/04/29 01:15
 

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

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

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

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