gpt4 book ai didi

c - ~x + ~y == ~(x + y) 总是假的?

转载 作者:太空狗 更新时间:2023-10-29 16:14:15 25 4
gpt4 key购买 nike

此代码的计算结果是否始终为 false?两个变量都是二进制补码有符号整数。

~x + ~y == ~(x + y)

我觉得应该有一些满足条件的数字。我尝试测试 -50005000 之间的数字,但从未实现相等。有没有办法建立一个方程来找到条件的解决方案?

将一个换成另一个会导致我的程序出现隐患吗?

最佳答案

为了矛盾起见,假设存在一些x还有一些y (mod 2n) 这样

~(x+y) == ~x + ~y

通过补码*,我们知道,

      -x == ~x + 1
<==> -1 == ~x + x

注意到这个结果,我们有,

      ~(x+y) == ~x + ~y
<==> ~(x+y) + (x+y) == ~x + ~y + (x+y)
<==> ~(x+y) + (x+y) == (~x + x) + (~y + y)
<==> ~(x+y) + (x+y) == -1 + -1
<==> ~(x+y) + (x+y) == -2
<==> -1 == -2

因此,矛盾。因此,~(x+y) != ~x + ~y对于所有 xy (mod 2n).


*有趣的是,在一台使用补码算法的机器上,等式实际上对所有 x 都成立。和 y .这是因为在某人的补充下,~x = -x .因此,~x + ~y == -x + -y == -(x+y) == ~(x+y) .

关于c - ~x + ~y == ~(x + y) 总是假的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com