美文网首页
整数溢出

整数溢出

作者: sarto | 来源:发表于2022-09-22 16:31 被阅读0次

    溢出分为向上溢出和向下溢出,也就是只能发生在符号相同的两个数相加

    加法溢出

    当 x y 都大于 0 的时候,可能向上溢出
    如果 y > MAX_INT - x 说明溢出

    当 x y 小于 0 时,可能向下溢出
    如果 y < MIN_INT - x 说明溢出

    func add(x,y) (rst, overflow)

    if x > 0 && y > 0 && y > MAX_INT - x {
      return overflow
    }
    if x < 0 && x < 0 && y < MIN_INT - x {
      return overflow
    }
    

    乘法溢出

    和加法溢出同理
    大于 0 时 x > MAX_INT / y 溢出
    小于 0 时 x < MIN_INT / y 溢出

    乘加溢出

    1. 先判断乘法是否溢出
    2. 再判断加法是否溢出

    func muladd(a,b,c) overflow

    向上溢出的情况
    if b > MAX_INT / a overflow a*b > MAX_INT - c overflow

    向下溢出的情况
    if b < MIN_INT / a overflow a*b < MIN_INT -c overflow

    相关文章

      网友评论

          本文标题:整数溢出

          本文链接:https://www.haomeiwen.com/subject/wpucdrtx.html