Search code examples
boolean-logicboolean-operations

What is the correct way to simplify a xnor


I was reading over a resource https://www.mi.mun.ca/users/cchaulk/misc/boolean.htm and I noticed the xnor simplification seems to have mixed outputs.

15a, 15b, 15c are all focusing on xnor but only 15b seems to be correct when I attempt to check.

For reference:

15a = (X + Y) • '(X • Y)

15b = 'X'Y + XY

15c =  (X + Y) • ('X + 'Y)

The expected truth table for all of them are:

x y output
0 0 true
0 1 false
1 0 false
1 1 true

But only 15b is giving that as the truth table.

Am I solving 15a,15c incorrectly or is the resource incorrect?


Solution

  • 15b is the definition of XNOR in conjunctive normal form. 15c is the negation of XNOR (i.e., XOR) in disjunctive normal form. You can derive this using De Morgan's laws, which state

    • '(XY) == 'X + 'Y
    • '(X + Y) == 'X'Y

    Using these laws, we can first write 15b

    'X'Y + XY = '('('X'Y)'(XY))
              = '((X + Y)('X + 'Y))
    

    to get the negation of 15c. Using it again, we get the negation of 15a.

              = '(X + Y) + '('X + 'Y)
              = '(X + Y) + XY
              = '((X+Y) '(XY))