是否有可能在给定B和C的“A& B = C”中恢复A?

时间:2016-12-20 03:52:46

标签: c algorithm logic circuit

我想问:ABC是任何二进制数。获得C = A & B&AND运营商)后,是否有可能从AB恢复C

我知道A的信息会因操作而丢失。我们可以形成像B <...> C = A这样的函数,以及它的复杂程度吗?

例如:

A = 0011
B = 1010
C = A & B = 0010

C的第2位是1,即A的第2位和B必须是1。但是,其他位缺少要恢复的信息。

提前谢谢。

6 个答案:

答案 0 :(得分:8)

不,这是不可能的。您可以从AND:

的真值表中看到这一点
A  B  C (A & B)

0  0  0
0  1  0
1  0  0
1  1  1

假设您知道B为0且C为0. A可以是1或0,因此无法从B和C推导出。

答案 1 :(得分:5)

您只能在A的相应位中恢复1B的位。对于具有零的B位,A在相应位置具有什么并不重要,因为C中的位无论如何都将为零:

A = 1xx0x011x0
B = 1001011101
    ----------
C = 1000001100

标有A的{​​{1}}的排名可以是0或1;无论如何,它们中的信息都会丢失。

答案 2 :(得分:2)

假设你只是说二进制逻辑而不是C变量,那么没有。

考虑:     a=0111, b=1010因此c=0010

所以你有b=1010, c=0010所以现在你怎么找到a

c中最左边的位是0,b中的最左位是1,所以我们知道a它必须为0 c中的第二位为0,b为0,因此您无法分辨a中的内容({1}中的1或0导致0 })

此时我们已经证明你不能这样做。

答案 3 :(得分:2)

不,因为没有独特的解决方案。无论其他位如何,具有相同位设置为B的任何A值都将满足该等式。

答案 4 :(得分:1)

这是关于方程式的问题。这是不可能的,因为自由度不是零。这与询问a + b = 10相同 - 什么是a,什么是b?

答案 5 :(得分:-1)

您无法恢复A,但您可以撰写A = (X & ~B) ^ C。在这里,X可以是任何内容(并且它会提供所有A)。

当然,这仅适用于BCC & ~B == 0

这是一个参数化解决方案。 python中的示例

>>> A = 32776466
>>> B = 89773888
>>> C = A & B
>>> C
22020352
>>> X = 1234567890    # arbitrary value
>>> U = (X & ~B) ^ C
>>> U
1238761874
>>> U & B     # same result as A & B
22020352