I compute
c = a 'OR' b // bitwise OR operation here
现在只给出 c
和 b
的值,我该如何计算出原始值 a
?
I compute
c = a 'OR' b // bitwise OR operation here
现在只给出 c
和 b
的值,我该如何计算出原始值 a
?
这是不可能的。
下面是一个简单的例子来阐述我的观点(假设'a','b'和'c'都是1位):
如果'b'是1,'c'将始终为1,你无法确定'a'的值。
您无法可靠地返回。例如,a = 0010,b = 0011。a OR b = 0011。如果a不同(例如0001或0011),则结果仍然相同。
由于 a OR 1 始终为 1,a OR 0 始终为 a,所以只有当 b 为 0 时才能找到 a 的值。
编辑:AND 和 OR 是有损操作(不能总是被反转)。而 XOR 和 NOT 是无损/可逆的。
这是不可能的,或操作是不可逆的。有许多不同的a值会给出相同的c值。
你可以通过使用b的补码进行and操作来获取一个可能的a值。
a = c & ~b
那是不可能的。没有办法确定 'a' 会是什么。