Mips减法负溢出

时间:2014-01-23 14:15:39

标签: binary mips

mips中的十六进制:如果我有0x80000000,我将其减去0xD00000000 我的答案是0X -50000000 这有可能是mips有负面或有另一种方式来写这个吗?那是对的吗?

1 个答案:

答案 0 :(得分:2)

请记住,如果你看一下最重要的一点,你就会知道你是否正在使用负数。为简单起见,让我们看看四个最重要的位。

0x80 = 1000 0000
0xD0 = 1101 0000

所以那些价值已经是负面的了。你想减去它们,即0x80 - 0xD0。好吧,减法是加法(a-b = a + -b),2的恭维的整点是你可以添加有符号数并得到你期望的结果。所以让我们否定0xD0:

1101 0000 # original value
0010 1111 # flip the bits
0011 0000 # add 1

如果这没有意义,请问全知Wikipedia

现在,我们可以添加值:

1000 0000
0011 0000
---------
1011 0000

所以,如果我做得对,0x80 - 0xD0 = 0xB0。它仍然是一个负数(但你不要在它前面加一个减号,这是由MSBit暗示的)。这是有道理的,因为0x80是一个非常负的数字,而0xD0是少于负数而不是0x80。 (实际上,它是...... 0xFF是-1,负数最小。)