6

Is it possible to simplify (a+b)xor(c+b)? What is the contribution of b to the final result? Note that I'm mixing boolean algebra with arithmetic, xor is a bitwise exclusive or on corresponding bits and + is a standard addition on 8 bits, that wraps around when overflown. a, b, c are unsigned char;

Cano64
  • 237
  • 1
  • 2
  • 8

2 Answers2

5

We can use an SMT solver to test our hypothesis that your formula can be simplified. You can head over to http://rise4fun.com:

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

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

and the result, anticlimactically, is:

x + z ^ y + z

Which means your formula cannot be further simplified.

Michael Foukarakis
  • 39,737
  • 6
  • 87
  • 123
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)
----
Mat
  • 202,337
  • 40
  • 393
  • 406
anonymous
  • 41
  • 2