代码之家  ›  专栏  ›  技术社区  ›  Roja Buck

是否可以预测数学运算是否会导致溢出?

  •  3
  • Roja Buck  · 技术社区  · 16 年前

    假设您有两个数字,对于每个典型的数学运算,是否可以预测(没有显著的开销)这些运算是否会导致这些数字当前表示为的类型的溢出?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Stefan Kendall    16 年前

    对。

    为了简单起见,假设溢出发生在100。

    a * b >= 100 ,我们有溢出

    因此,为了 a = n ,如果 b >= 100 / n ,我们有溢出。如果 a b 是0,没有溢出。

    这对任何需要增加右手常数的数学设置都不起作用,因为溢出检测将溢出。但是,操作的任何给定步骤都可能溢出,因此您确实需要在机器级而不是算法级检查每一个加法和乘法。因此,需要将问题划分为已知的最小数量,才能有效地使用此溢出检测。

    我宁愿让语言抛出一个例外,但那只是我。

        2
  •  0
  •   Douglas    16 年前

    打开溢出保护,然后应用该操作。如果引发溢出异常,或者错误寄存器设置了溢出位,或者您的环境告诉您该问题,那么您知道如果再次这样做,您将得到溢出。

        3
  •  0
  •   Daniel Moura    16 年前

    总金额:

    MAX_NUMBER - A < B
    

    会有溢出