使用二进制补码执行按位相减时,如何知道何时应该忽略溢出?我读过的几个网站都表示,溢出只是被忽略,但这并不总是有效 - 对于像-35 - 37
这样的问题,溢出是必需的,因为需要额外的数字来表示-72
的答案。使用二进制补码进行按位相减的溢出
编辑:这里是一个例子,使用上面的等式。
35
二进制 - >100011
,发现两个互补,使其负:011101
37
二进制 - >100101
,发现两个互补,使其负:011011
执行除上述条款(的-35 - 37
二进制数):
011101
011011
------
111000
采取补转换b ack to positive:001000
以上是许多网站(包括学术网站)所说的答案应该是的,因为你忽略了溢出。但是,这显然是不正确的。
显然,那些网站并没有描述如何按位计算'-32 - 37':-) –
[This answer](http://stackoverflow.com/a/3878135/1672458)声明:以及关于[此学术网页]步骤4(http://courses.cs.vt.edu/~csonline/NumberSystems/Lessons/SubtractionWithTwosComplement/index.html)。 [这个PowerPoint演示(http://docs.google.com/viewer?url=http%3A%2F%2Fwww.cs.uiuc.edu%2Fclass%2Fsp08%2Fcs231%2Flectures%2F10-Subtraction.pdf)(谷歌浏览器链接)也显示在幻灯片9上。 – vaindil
什么是按位减法?你的意思是减去2的补数?如果是这样的话,那么你的问题应该是,当2的补码加上宽度为N的负整数时(例如)是否溢出? – AraK