【问题标题】:Unsigned binary subtraction when numbers are too large to form two's complement数字太大而无法形成二进制补码时的无符号二进制减法
【发布时间】:2011-08-04 09:57:43
【问题描述】:

我在计算机体系结构和我的教授。一直没能给出满意的答复。

假设我们有一个 32 位处理器,如果我们有两个无符号整数 xy,它们都大于 231(以至于它们太大而无法正确转换为二进制补码形式)我们如何执行减法?

如果减数是一个常数,我可以看到编译器如何在静态分析中对此进行补偿。但是我们如何在运行时处理这种可能性,尤其是在像 C 这样的静态编译语言中?这只是抛出溢出错误还是某些架构subu 支持特殊操作?

我为 MIPS 找到的所有内容都表明它只是执行二进制补码减法,但这在这种情况下不应该工作,不是吗?

【问题讨论】:

    标签: binary unsigned subtraction


    【解决方案1】:

    你提出的情况不是问题。具体例子:

      0xFFFFFFFF -  0xFFFF0000
    = 0xFFFFFFFF + -0xFFFF0000
    = 0xFFFFFFFF +  0x00010000
    = 0x0000FFFF
    

    【讨论】:

    • 不知何故,我在这里搞砸了我在纸上的减法,因为我得到了不同的结果。但这也是我的想法。 +1。
    猜你喜欢
    • 2019-02-23
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多