unsigned long long相加或者相乘,怎么判断溢出?

unsigned long long类型数据,相加或者相乘,怎么判断溢出?

c c++

4个回答

这个就用到了数学方面的知识了,你只需要对两个数分别取对数,并且看看他们的和是否大于等于64就行了。

log2(a)+log2(b) >= 64就是溢出,这两个方法需要包含math.h

用汇编就简单了, 标志寄存器里面有一个溢出标志位 OF, 检查这个标志位就可以了.
或者两数相加,判断它们的和如果小于某一个数则证明溢出

用unsigned long long类型所允许的最大值,减去或者除去其中一个减数或者因数,用所得结果与被减数或者另一个因数比较大小,前者大则没有溢出,否则溢出。

比如:五位数 * 五位数 的结果是 十位数(5 + 5)。先获取两个 long long 变量**数字**的长度,再相加,超过long long 规定的范围就超了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!