2016-10-04 62 views
0

所以我在做CS,讲师写了一个新的二进制问题,我不能把头包裹起来。Two's Complement,减去两个负数的二进制数

基本上,你如何减去两个负数如果他们是二进制的?

具体如何使用刚推出的Two's Constant来实现。

例如:-2 - -7 = 5
还是:1110 - 1001

我不明白你如何使用这些位来得到正确的答案,即5.

任何人都可以帮忙吗?

+0

你经常做减法以同样的方式?或者当你溢出最左边的位时,你在问规则吗? –

+0

嗨凯文,我真的不明白怎么样?如果我切换第二学期并添加它们,即使在溢出之后,我仍留有数字1。你介意给我看一个例子吗? – alexjackhughes

+0

潜在地尝试在这里? http://cs.stackexchange.com/ – dahui

回答

1

如果你有

1110 -2 
- 1001 -7 
------ 
    0101 5 

,这是一样的

1110 -2 
+ 0111 7 
------ 
    0101 5 
+1

谢谢!所以,答案是10101 - 那么因为溢出,你摆脱了最左边的数字,使它成为0101,即5? – alexjackhughes

+0

@alexjackhughes是的,如果您使用4位或8位或32位值,则不会因为执行计算而获得额外的位。 (从技术上讲,CPU确实将这一点保留在标志中,但Java忽略它们) –