2011-04-13 81 views
1

我在计算机体系结构和我的教授。一直未能给出满意的答案。当数字太大而无法形成二进制补码时,无符号二进制减法

假设我们有一个32位处理器,如果我们有两个无符号整数Xÿ,这两者都是大于2 (使得它们太大而不能正确地转换为二的补充形式)我们如何进行减法?

如果减数是一个常数,我可以看到编译器如何在静态分析中补偿这一点。但是我们如何在运行时处理这种可能性,特别是在像C这样的静态编译语言中?这是否会引发溢出错误或者是否有一些体系结构subu支持特殊操作?

我发现MIPS的一切都表示它只是执行二进制补码减法,但在这种情况下不应该起作用,应该如何呢?

回答

1

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

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

不知何故,我弄乱了我在纸上的减法,因为我得到了不同的结果。但这也是我的想法。 +1。 – Joey 2011-04-13 05:11:08