简化 (a + b) XOR (c + b)

6

能否简化 (a+b)xor(c+b)b 对最终结果的贡献是什么? 请注意,我混合了布尔代数和算术,xor 是对应位上的按位异或,+ 是8位标准加法,当溢出时会循环回来。 其中,a、b、c 都是无符号字符。


1
不太可能,因为XOR运算纯粹是按位操作,而加法会影响相邻的位。 - Paul R
2个回答

5

我们可以使用SMT求解器来测试我们的假设,即您的公式可以简化。您可以前往http://rise4fun.com

x = BitVec('x', 8)
y = BitVec('y', 8)
z = BitVec('z', 8)

print simplify((x + z) ^ (y + z))

结果,有点扫兴,就是:
x + z ^ y + z

这意味着您的公式无法进一步简化。

我在问题中没有看到任何假设! - Lightness Races in Orbit
1
这个结果 x + z ^ y + z 没有意义。原始的求和式在 xy 周围是对称的,而结果却不是。 - Salvador Dali
@SalvadorDali:如果你考虑到Z3使用的Python运算符优先级,这就是有意义的:https://docs.python.org/3/reference/expressions.html#index-77 - Michael Foukarakis

3
(a+b)xor(c+b) 
--------------
=((not(a+b))*(c+b))+((a+b)*(not(c+b))) 
-----------------------
=((not a)*(not b)*(c+b))+((a+b)*(not c)*(not b)) 
----
=((not a)(not b)*c) + (a*(not c)(not b)) 
----
=(not b)((not a)c + a(not c)) 
----
=(not b)(a xor c)
----

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接