【发布时间】:2012-06-22 03:23:03
【问题描述】:
此代码是否总是评估为假?两个变量都是有符号整数的二进制补码。
~x + ~y == ~(x + y)
我觉得应该有一些满足条件的数字。我尝试测试-5000 和5000 之间的数字,但从未达到相等。有没有办法建立一个方程来找到条件的解决方案?
将一个换成另一个会导致我的程序中出现隐蔽的错误吗?
【问题讨论】:
-
你想要证明还是什么?
-
请注意,在有符号整数溢出的情况下,它在技术上是未定义的行为。所以它有可能返回
true,即使他们永远不能假设严格的二进制补码。 -
@AlvinWong 是的,解释一下会很好
-
@Steve:您可以证明您已经尝试了所有组合中的所有常见嫌疑人(-1、0、1、2 等),以及您尝试“解决”小字长(三位?四位?)的问题。这肯定有助于让我们相信,我们不只是帮助某人获得他们没有首先尝试为自己赚取的东西。 :)
-
@AlexLockwood 当我第一次发布问题时,我假设将问题标记为“家庭作业”要求人们提供帮助我解决问题的线索(如“家庭作业”标签状态的描述)和不只是给出答案。这就是为什么我只是简单地问问题的问题:)
标签: c bit-manipulation signed twos-complement