6

我计算

c = a 'OR' b // bitwise OR operation here

现在只给出 的值,cb如何计算 的原始值a

4

6 回答 6

24

这是不可能的。

一个简单的例子来证明我的观点(假设 a、b 和 c 都是 1 位的):

如果 'b' 为 1,则 'c' 将始终为 1,您无法确定 'a' 的值。

于 2009-07-08T06:58:39.073 回答
4

你不能可靠地回去。例如,a = 0010 和 b = 0011。a OR b = 0011。如果 a 不同(例如 0001 或 0011),则结果相同。

于 2009-07-08T06:59:13.910 回答
3

由于 OR 1 始终为 1,而 OR 0 始终为 a,因此您只能在 b 为 0 时找到 a 的值。

编辑:AND 和 OR 是有损操作(不能总是颠倒)。而 XOR 和 NOT 是无损/可逆的。

于 2009-07-08T07:01:14.247 回答
2

这是不可能的, or 操作是不可逆的。有许多不同的 a 值可以为 c 提供相同的值。

您可以通过对 b 的补码进行 an and 运算来获得 a 的一个可能值。

a = c & ~b
于 2009-07-08T07:02:03.263 回答
1

那是不可能的。没有办法确定“a”是什么

于 2009-07-08T06:58:40.633 回答
1

从数学的角度来看,不可能从 C 和 B 中推导出 A。如果对于第 n 位,您在 C 中的值为 1,而在 B 中,您不知道 A 中的第 n 位是否等于 0 或 1

于 2009-07-08T07:01:05.217 回答