2015-04-04 59 views
0

我想添加以下兩個二進制數字,但我無法這樣做因爲我不知道這是否溢出?這是一個溢出? - 二進制補碼

110101 + 010111 我得到的答案是:1001100

難道我刪除了答案最左邊的1或者我把它?通過刪除它我得到12,否則答案是不正確的。難道我做錯了什麼?

這是正確的嗎?

+0

最終答案是1001100這應該是(-11)+ 23 = 12.但是,如果我要刪除最左邊的1,我得到12 - 我只是把1留在? – GDesigns 2015-04-04 14:57:36

回答

1

這個問題的答案取決於你正在談論的系統位字的大小。在8位(或更高版本)系統,和你做2的補的

110101 + 010111 = 1001100 

總和是一樣的:

00110101 + 00010111 = 01001100 

是:53 + 23 = 76沒有溢出或執行。

如果它是一個7位系統,做2的補,那麼你必須:

0110101 + 0010111 = 1001100 

這是53 + 23 = -52。有溢出,但沒有執行。

如果它是一個6位的系統,做2的補碼,然後:

110101 + 010111 = (1)001100 

這是-11 + 23 = 12。沒有溢出,但有一個執行。請注意,在6位系統中,技術上不可能有1001100,因爲它是7位。你將有001100

僅供參考,請參閱The CARRY flag and OVERFLOW flag in binary arithmetic

+0

清除了很多東西 - 謝謝 – GDesigns 2015-04-04 15:12:34