我想解决:1111 - 10010(二进制)
我想用两个赞美来解决它。我意识到答案是消极的,但我不知道如何得到它。我尝试在第一个数字(01111)之前设置一个零,使数字等于1和0。另外,我怎么知道答案是否定的?
01101
+ 00001
____________
01110 <-- two's compliment
01110
+01111
________
11101 //this isn't right
答案 0 :(得分:0)
我认为解决这个问题的最简单方法就是将其简化为小步骤。
我的第一个假设是你试图解决15(1111(二进制)) - 18(10010(二进制))
我发现在二进制补码中进行减法的最简单方法是method of complements,而不是试图从正15减去正数18(+15 - (+18)),我们反而加负18至正15(+15 +( - 18))。这有相同的结果,但更容易做到两个赞美(注意:如果您的数字系统没有负数,则不能这样做)
所以我们必须得到数字15和-18以及convert them into two's complement numbers。由于18以5位二进制表示,我们需要使用至少6位来表示二进制补码中的-18。
要将-18转换成二进制补码,我们取两个补码010010翻转这些位(将0转换为1s,1s转换为0)101101,然后使用binary addition将一个加到翻转位3 p>
1 (carried digits)
101101 (-19 (flipped 18 ))
+ 000001 (1)
_________
101110 (-18)
要将15转换成二进制补码,我们取15个二进制(1111)然后我们在左边添加零,直到它与-18(101110)001111
具有相同的位数既然我们都用二进制补码,我们可以使用binary addition
将它们加在一起 111 (carried digits)
001111 (15)
+ 101110 (-18)
_________
111101 (-3)
这给了我们-3的二进制补码,这是正确答案(15 - 18 = -3)。
的两个补码