Advanced Boolean Algebra Manipulation

Many Boolean Algebra problems can be solved using more then one formula, just like most Algebra problems. For example...

         ____
    B --\    \  ____
         )    )|    \
    C --/____/ |     O-- D
    A----------|____/

     ___________
 D = A * (B + C)          [given formula]
     _   _______                    _______   _   _
 D = A + (B + C)          [DeMorgan (A * B) = A + B]
     _    _   _                     _______   _   _
 D = A + (B * C)          [DeMorgan (A + B) = A * B]
      _   _     _   _
 D = (A + B) * (A + C)
                   [A + (B * C) = (A + B) * (A + C)]
     _______   _______              _______   _   _
 D = (A * B) * (A * C)    [DeMorgan (A * B) = A + B]
     _________________              _______   _   _
 D = (A * B) + (A * C)    [DeMorgan (A + B) = A * B]

Manipulation rule number 5 could have been used to go from the first step to the last one in a single move. However, using DeMorgan's Theorem, the problem turns into something that manipulation rule number 6 can then be used on instead. DeMorgan's Theorem changes the logic of the formula.

Boolean Algebra can also be used to confirm the correct logic in a circuit. For example, take the following case...

       ____
 A ---|    \
      |     O--
 B ---|____/   |    ____
    |           ---\    \
    |               )    O-- C
     --------------/____/

     _____________
          _______
 C = (B + (A * B))    [given formula]

     _   =======                _______   _   _
 C = B * (A * B)      [DeMorgan (A + B) = A * B]

     _                 =
 C = B * (A * B)      [A = A    {double negative}]
               _
 C = (A * B) * B      [A * B = B * A]
              _
 C = A * (B * B)      [(A * B) * C = A * (B * C)]
                           _
 C = A * 0            [A * A = 0]

 C = 0                [0 * A = 0]

Using Boolean Algebra, the above formula is proven to always result in a logical 0 output. No matter what A and B are, C is always a logical 0.

This next example is very important in digital logic, and is often times called a logical function itself.

               ____
      --------|    \   |\        _____
     |        |     O--| O-------\    \
     |      --|____/   |/         )    O-- C
 A --| B --|   ____           ---/____/
     |      --\    \         |
     |         )    O--------
      --------/____/

     ___________________
      =======   _______
 C = ((A * B) + (A + B))    [given formula]

     ___________________
                _______      =
 C = ((A * B) + (A + B))    [A = A  {double negative}]

     _______   =======                _______   _   _
 C = (A * B) * (A + B)      [DeMorgan (A + B) = A * B]

     _______                 =
 C = (A * B) * (A + B)      [A = A  {double negative}]
      _   _                         _______   _   _
 C = (A + B) * (A + B)      [DeMorgan (A * B) = A + B]
       _   _           _   _
 C = ((A + B) * A) + ((A + B) * B)
                     [A * (B + C) = (A * B) + (A * C)]
           _   _           _   _
 C = (A * (A + B)) + (B * (A + B))     [A * B = B * A]
           _         _           _         _
 C = ((A * A) + (A * B)) + ((B * A) + (B * B))
                     [A * (B + C) = (A * B) + (A * C)]
                _           _
 C = ((0 + (A * B)) + ((B * A) + 0)             _
                                           [A * A = 0]
          _         _
 C = (A * B) + (B * A)                     [0 + A = A]

This formula indicates that C is true if A is true and B is false, or when B is true and A is false. This function is called the XOR (exclusive OR). Remember that in an OR gate, one input true will create a true output, and that if both inputs are true the output is still true. The XOR function will give a false output if both inputs are true as well as both false, and will only give a true output when the inputs are different.



Back to the index


copyright Michael Lewis, 1999