当数字太大而无法形成二进制补码时,无符号二进制减法

时间:2011-04-13 04:56:05

标签: binary unsigned subtraction

我在计算机架构和我的教授。无法给出满意的答案。

假设我们有一个32位处理器,如果我们有两个无符号整数 x y ,两者都大于2 31 (因此它们太大而无法正确转换为二进制补码形式)我们如何进行减法?

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

我为MIPS找到的所有东西都说它只是执行两次补码减法,但是在这种情况下这应该不起作用,不是吗?

1 个答案:

答案 0 :(得分:1)

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

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