首页 > 解决方案 > 加法上的 AND 位运算

问题描述

关于这个问题,我一直在寻找一段时间,但我找不到任何结果。假设 A、B 和 C 是整数,是否存在函数(算术或布尔)F 和 G 使得:

(A + C)&(B + C) = F(A,B) + G(C)

其中 & 是位运算符 AND。换句话说,我正在寻找一种使 C 值独立于 A 和 B 的方法。

编辑 这里的“+”是普通的加号操作,不是OR。

标签: bit-manipulationbitwise-operatorsarithmetic-expressionsinteger-arithmeticbitwise-and

解决方案


不。

让我们考虑 A = 0,并且 B 和 C 从 0 和 1 中选择的情况。这是结果表:

B C  output
0 0  0
0 1  1
1 0  0
1 1  0

然后我们问这个问题,是否存在函数 F 和 G 使得F(B) + G(C) == C & (B + C). 不可能有解决方案,因为前两行暗示G(1) = G(0) + 1(来自的贡献F不能改变,因为它的参数两次都是零),底部两行暗示G(0) = G(1)(同样因为贡献来自F不能改变,它的参数都是一个次)。我们不能同时拥有它,G(1) = G(0) + 1G(0) = G(1)不能同时拥有。

除了 A = 0 和 B 和 C 都是二进制之外,还有其他情况,但如果 F 和 G 在一种情况下不能存在,那么所有其他情况都无法“修复”它。


推荐阅读