我理解使用二进制补码来表示负值的概念,然后可以使用该值来查找结果值。
恩。 x = 15
和y = 10
,在二进制x = 1111
和y = 1010
中用于计算x - y
,我们用qosxswpoi表示y
为负,这导致y = 0101 + 0001 = 0110
然后执行加法x + (-y) = 1111 + 0110 = 0101
,转换为预期结果5
。
一切都很好,直到我尝试使用相同的方法计算y - x
,最终导致1011
转换为11
,而不是预期的结果-5
。有没有办法正确计算两个二进制数的加法导致负值?
这样想吧; y - x
相当于-x + y
。出于这个原因,我们可以首先否定x
,即15
(二进制中的1111
),在否定后变为0001
。然后我们可以将该值添加到y
(10
,1010
的二进制)中,这会产生1011
。因为这个值是负的,我们然后翻转位并加1使其成为正数,我们得到0101
,它是基数为10的5
。这意味着我们的结果是-5
,这是正确的。
我认为你到处都是正确的,除非你说它转换为11
。