与运算反演方法

时间:2019-06-12 20:08:54

标签: bitwise-operators

让我们说一个表达式:

A & B = C

现在,给我B和C,我需要找到A。我该怎么办?

我在想:

A & B = C

所以

A & B || !B = C || !B

A = C || !B

这项工作可以吗?

2 个答案:

答案 0 :(得分:0)

并非总是可能的,因为AND操作没有反函数。

特别是,如果B为假,C也必须为假,但是A可以有任何值。

可以为OR运算符提供类似的参数,该运算符也没有反函数。 XOR是可逆的。

答案 1 :(得分:0)

可能无法在每种情况下仅根据B和C来确定A的值。

我们谨记A && B = C

让我们看看不同的情况

  1. 如果C为true,则A必须为true,否则A && B不能为true。

  2. 如果C为假而B为真,则A必须为假,否则A && B不能为假。

  3. 如果B和C均为假,则A可以为真也可以为假,您不能说是因为无论A的值如何,A && B始终为假。

问题是,您是否需要满足方程A && B = C的任意A,还是需要A的“历史正确”值?对于先验,您可以为情况1和2明确解决,并为情况3选择一个任意值。对于后者,您也可以为情况1和2解决此问题,而不是情况3。

是的,您的最终方程将始终给出一个满足原始方程的A。但这可能不是历史正确的。即,如果最初所有A,B和C均为假,但您的公式C || !B将得出A的值为true。我不知道您的用例是否正确。