c++ 如何处理算术溢出?

2jcobegt  于 2023-01-06  发布在  其他
关注(0)|答案(4)|浏览(227)

我试图找出如何处理溢出的加法,减法,乘法和除法,为两个非常大的整数。任何反馈/输入将不胜感激。有人知道任何算法,这和/或来源,我可以咨询?
(我在发帖前已经做了研究,只是不知道如何解决这个问题和)
EDIT:用于两个非常大的整数

6pp0gazn

6pp0gazn2#

因为一个整数除以另一个整数很少是整数,所以这在一般情况下是不可能的。
也就是说,这就是我认为你想要的:http://gmplib.org/
它处理任意大小的整数和有理数。

xvw2m8pv

xvw2m8pv3#

如果您想避免溢出的情况发生,一种方法是使用链表存储数字的各个部分,然后对各个部分分别执行计算,并在需要时向列表添加更多节点以处理多余的数字。
示例
12,34,56,78,90可存储为-〉12,34,56,78,90要进行乘法运算,每个单位将被相乘并进位到下一个单位-〉1,23,45,67,89,0
但是请记住,将其划分为个位数单位更容易,如1、2、3、4、5而不是1、23、45,因为这会使运算更简单。
编辑::“handle”这个词不是你应该用的词

py49o6xq

py49o6xq4#

如果您想知道如何检查溢出,我建议您:

log(a) + log(b) = log(a*b)
  • 正确=〉无溢流
  • 不正确=〉溢出

(...现在祈祷没有人能找到反例,请不要从负数开始,这是一个uint方法)。

相关问题