能否简化 (a+b)xor(c+b)?b 对最终结果的贡献是什么? 请注意,我混合了布尔代数和算术,xor 是对应位上的按位异或,+ 是8位标准加法,当溢出时会循环回来。 其中,a、b、c 都是无符号字符。
能否简化 (a+b)xor(c+b)?b 对最终结果的贡献是什么? 请注意,我混合了布尔代数和算术,xor 是对应位上的按位异或,+ 是8位标准加法,当溢出时会循环回来。 其中,a、b、c 都是无符号字符。
我们可以使用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
x + z ^ y + z
没有意义。原始的求和式在 x
和 y
周围是对称的,而结果却不是。 - Salvador Dali(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)
----