解题思路:这道题目涉及到计算机组成原理的知识,有必要在回顾一下。首先题目给出的范围是long long的范围[$-2^{63},2^{63}-1$],因此题目中给出的两个整数相加可能会溢出(正溢出或负溢出)。在计算机组成原理中指出,如果两个正数之和等于负数为正溢出,两个负数之和等于正数为负溢出。基于此题目,需要明确溢出后的具体范围,才能准确判断!
在确定正负溢出范围之前需要先明确一下long long范围是怎么来的,计算机中long long类型占64位,第一位是符号位,所以共有63位表示数据,取最大值的时候63位应该都存1,所以是$2^{63}-1$,可以类比十进制,很容易得出。
正溢出范围:当$A+B>=2^{63}$时,显然有$A+B>C$成立,因为C也是个long long 范围的整数,但A+B会因为超过long long 的正向最大值$2^{63}-1$而发生正溢出。在计算机中long long溢出可以参考下图来确定溢出范围。因为一共有64位,所以可以理解成循环表示,正数和0占63位,负数占63。经过下图理解,可知当A和B都为正数,但是和却为负数时,就一定是正溢出,结果为true。

负溢出范围:当$A+B<-2^{63}$时,显然有$A+B

1 |
|