gpt4 book ai didi

addition - add 和 addu 之间的区别

转载 作者:行者123 更新时间:2023-12-02 01:37:42 24 4
gpt4 key购买 nike

我对 add 和 addu 之间的区别感到困惑。

MIPS指令引用说:

  • 添加(带溢出)
  • 添加无符号(无溢出)

我的理解是对有符号操作数使用add,对无符号操作数使用addu。

但让我们考虑一下这个例子(只有 6 位):

overflow|V1 | 1 1 1  <- carry  | 1 1 1 1 0 1 +  | 1 1 1 1 1 0 =-----------------  | 1 1 1 0 1 1

这是我的推理:

  • 如果我考虑第一个和第二个操作数有符号数字(二进制​​补码),则结果是正确的 (-3 + -2 = -5),并且我不希望出现溢出异常。所以我会使用 addu 来避免这个异常,但是,虽然结果是相同的,但顾名思义,使用 addu 是针对无符号数!
  • 如果我考虑第一个和第二个操作数无符号数字,那么我希望引发异常(因为 61 + 62 不等于 59)。因此,我会使用 add 来引发异常,而不是使用 addu,正如其名称所暗示的那样。

现在我的问题是:

  • 假设操作数是有符号的(上例中为负)数字,我应该使用 addu (如我的推理所示)还是应该使用 add (如其名称所示)?
  • 假设操作数是无符号(正)数字,我应该使用 add(如我的推理所示)还是 addu(如其名称所示)?

最佳答案

指令名称具有误导性。如果您想要溢出陷阱,请对有符号和无符号操作数使用addu

如果您由于某种原因需要溢出陷阱,请使用add。大多数语言不希望在有符号溢出时陷入陷阱,因此 add 很少有用。

关于addition - add 和 addu 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com