2012-02-29 86 views
1

我想解決:1111 - 10010(二進制)減去不同長度的二進制數的二進制數

我想使用two's compliment來解決它。我意識到答案是否定的,但我不知道如何得到答案。我試着在第一個數字(01111)之前放一個零來給數字相同的數字1和0。另外,我怎麼知道答案是否定的?

01101 
    + 00001 
____________ 
    01110 <-- two's compliment 

01110 
+01111 
________ 
11101  //this isn't right 
+0

我建議您閱讀http://en.wikipedia.org/wiki/Two%27s_complement。 – 2012-02-29 23:58:31

回答

0

我認爲,解決這個問題最簡單的方法是將其喙成小步驟。

我的第一個假設是,你正在試圖解決15(1111(二進制)) - 18(10010(二進制))

我覺得做減法的補最簡單的方法是通過method of complements這是而不是試圖從正面15(+15 - (+18))減去正面18,而是向正面15(+15 +( - 18))加上負面18。這有相同的結果,但更容易做兩個人的讚美(注意:你不能這樣做,如果你的號碼系統沒有負數)

所以我們必須採取數字15和-18和convert them into two's complement numbers。由於18以5位二進制表示,因此我們需要使用至少6個6位來表示-18的二進制補碼。

至-18轉換成二進制補,我們採取18補010010翻轉那些位(轉0到1秒和1到0)101101,然後用添加一個到翻轉位binary addition

 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)。

您可以瞭解補看twos complement wiki page