二的补码加法导致负数

时间:2018-09-17 04:37:58

标签: binary addition twos-complement

我了解使用二进制补码表示负值的概念,然后可以使用负数来查找结果值。

例如 x = 15y = 10(二进制x = 1111y = 1010) 为了计算x - y,我们使用二进制补码将y表示为负值y = 0101 + 0001 = 0110,然后执行加法运算x + (-y) = 1111 + 0110 = 0101转换为预期结果5

一切都很好,直到我尝试使用相同的方法来计算y - x,最终导致1011转换为11而不是预期的结果-5 。有没有一种方法可以正确地计算两个二进制数相加导致的负值?

1 个答案:

答案 0 :(得分:1)

这样想; y - x等同于-x + y。因此,我们可以首先取反x,它是15(二进制形式的1111),取反后就变成0001。然后,我们可以将该值添加到y(二进制中的101010)中,得到1011。因为此值是负数,所以我们将这些位翻转并加1使其为正数,然后得到0101,即以10为底的5。这意味着我们的结果是-5,这是正确的。

我认为您在所有地方都是正确的,除非您声明将其翻译为11