如何添加两个十六进制值?

时间:2017-05-02 21:46:57

标签: mips

这是一项学校作业。我已经完成了作业,其中一个问题是在添加两个十六进制值后计算出值。

0x80000000和0xD0000000。我知道D = 13,但我不明白答案是15,因为8 + 13 = 23?有人可以解释我做错了什么,以及我应该做些什么呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果你认为每个数字代表一个四元组很容易,例如

0xDEADBEEF = 13 *16⁷+ 14 *16⁶+ 10 *16⁵+ 13 *16⁴+ 11 *16³+ 14 *16²+ 14 *16¹+ 15 *16⁰。

上述十六进制值需要一个算法转换为ALU可以添加的格式,例如二进制数。

D是十进制的13,因为如果A代替10,则D是数字13,依此类推(0,1,2,3,4,5,6,7,8,9,A,B,C,D, E,F)。 D的位置是7,所以数字是13 *16⁷。

我们注意到如果我们这样做会更容易LSB,并且认识到F是十六进制表示法的15,因此左边的数字将是15 *16⁰= 15。

0xFF因此意味着15 *16¹+ 15 *16⁰= 15 * 16 + 15 = 255(您可以使用计算器检查)。

现在算法很清楚。

3735928559是DEADBEEF的十进制值,因为== 13 * 16 ^ 7 + 14 * 16 ^ 6 + 10 * 16 ^ 5 + 13 * 16 ^ 4 + 11 * 16 ^ 3 + 14 * 16 ^ 2 + 14 * 16 ^ 1 + 15 * 16 ^ 0 = 3735928559。

答案 1 :(得分:1)

有时我会将十六进制转换为二进制基数2这是因为我觉得使用二进制基数2比十六进制运算更有信心。 为此,您需要将每个十六进制数组排成4位二进制数组。

 hex   0x8 + 0xD

转换为二进制

 binary  1000 + 1101 = 10101 = 21

再次将其分组为4位

 0001 0101 = 0x15

我忽略了它是否有签名号并且没有使用二进制补码。