两个补语加成导致否定

问题描述 投票:1回答:1

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

恩。 x = 15y = 10,在二进制x = 1111y = 1010中用于计算x - y,我们用qosxswpoi表示y为负,这导致y = 0101 + 0001 = 0110然后执行加法x + (-y) = 1111 + 0110 = 0101,转换为预期结果5

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

binary addition twos-complement
1个回答
1
投票

这样想吧; y - x相当于-x + y。出于这个原因,我们可以首先否定x,即15(二进制中的1111),在否定后变为0001。然后我们可以将该值添加到y101010的二进制)中,这会产生1011。因为这个值是负的,我们然后翻转位并加1使其成为正数,我们得到0101,它是基数为10的5。这意味着我们的结果是-5,这是正确的。

我认为你到处都是正确的,除非你说它转换为11

© www.soinside.com 2019 - 2024. All rights reserved.