mips中的十六进制:如果我有0x80000000,我将其减去0xD00000000 我的答案是0X -50000000 这有可能是mips有负面或有另一种方式来写这个吗?那是对的吗?
答案 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,负数最小。)