3 9 6 F E 2 + 5 3 8 A A A
这是我假设二进制补码加法必须解决的问题。我知道如何找到两者的补码。
C 6 9 0 1 E
AC 7 5 5 6
但是,我在网上看到的大多数问题以及如何解决这个问题的示例都只展示了如何用二进制数解决问题。是否需要将其转换为二进制,求出二进制补码,解决问题,然后再将其转换回十六进制?或者我可以像上面那样解决问题吗?
如果我只添加两个补码然后我得到
7 3 0 5 7 4
溢出一。然而,这是不正确的。
正确答案显然是
8 C F A 8 C。
我看到的只是将两个数字加在一起,而不将它们转换为二进制补码。但当我像平常一样做时,它显然有溢出,我没有得到一个。为什么?问题是需要先将其转换为二进制还是没有必要,我只是解决了错误的问题?
有两种东西被容易混淆地称为“二进制补码”:
“二进制补码加法”根本不需要运算。它实际上只是意味着用二进制补码编码的数字进行加法。嗯,实际上,这只是常规的旧加法,所以您需要做的就是将两个数字加在一起。如果最终溢出到最左边的位,那么当您解释结果时,您将希望将其读取为二进制补码负数。
所有这些都可以用十六进制完成,就像您所做的那样。如果最左边的十六进制数字是 8-F,则结果为负数。