2011-12-05 203 views
1

我不確定是否可以在這裏問一個二進制問題,但是在這裏.. 在我們的期中,我們有這個問題,但我們的教授沒有提供正確的答案。這讓我瘋狂,決賽即將到來,所以填補這個空白可能是個好主意。謝謝!二進制中最小的二進制補碼

找到最小的二進制補碼數,當加到0101 0101時會導致溢出。用二進制表達你的答案。

我推理: 我找到了原始二進制0101 0101的範圍,將其轉換爲實際的數字,然後加上一個。然後,我將比範圍多1的數字轉換爲8位二進制數作爲我的答案。但是,這隻能爲我贏得3/6分。我不知道我能做些什麼。任何見解將不勝感激!

回答

3

原始二進制數是一個正數(0符號位)。當你向它添加一個改變符號位的正數時發生溢出。它應該很容易看到的最小數量是使用二進制表示法:

沒有溢出:

0101 0101 
+ 0010 1010 
    --------- 
    0111 1111 

溢出:

0101 0101 
+ 0010 1011 
    --------- 
    1000 0000 

我不知道如果這是你的教授正在尋找。 (您可能只從1000 0000減去,而不是看它的圖案。)

編輯既然你問了一個例子(指東西從上面的不同),這裏的減法是如何工作的:

1000 0000 (the target overflow quantity) 
- 0101 0101 (the original binary) 
    --------- 
    0010 1011 (the smallest number that will overflow when added to original) 
+0

減法的+1。基本上,找出第一個會溢出的數字('1000 000'),然後找出你離該數字有多遠(即從中減去)。 – yshavit

+0

感謝您的回覆。這很有幫助! = 3我可以看到一個例子嗎? ^^ – Alysha

0

該數字是十進制的85,所以128-85是43