2011-12-05 110 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