Boolean expressions can be more complex than just a simple disjunction, conjunction, or complementation. It is by combining these three basic operations that more complex expressions are formed. Consider the following expression:
This expression involves two operations. The first operation is the conjunction of A and B. The second operation is the complement the result of the conjunction. This double operation has a special name, nand, for "not and." Compare this to:
This expression involves three operations. The first is to complement A. The second is the complement B. The third is two compute the disjunction of the two complements. The above has no special name. It's just the conjuction of two complements. This leads to a basic rule about the overline (the complementation operator). The complement is performed on the expression beneath the bar. In the first example, one bar covered the conjunction AB, so it was performed after the conjunction. In the second example, there are two complementation operators, each one over a single variable. Similarly:
is called nor for "not or." The disjunction is performed first, followed by the complementation. Then there's:
which is the disjunction of two complements. The truth table below shows the relationships between these four expressions:
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
Examining this table you can see that:
This result, known as DeMorgan's Law, is quite heavily used in the process of expression reduction. For example, the first form of DeMorgan's law shown above computes A nand B in two different ways, but the expression on the left side of the equality uses only two operations whereas the version on the right side uses three operations. Obviously, if you were to compute nand you would choose the two-operation version over the three-operation version. What's more, if you saw the three-operation version, you could replace it with the two-operation version, thus reducing the number of operations the entire expression would require to compute. This becomes very important when we want to build fast computers; we will always want to choose the fastest version of any operation. We address reduction more fully in the next section.
Another thing to notice is the operator precedence for these three operations. In the absence of parenthesis, or if the complement operator is over a single value, then the following rules apply:
So, the following expression
could be evaluated in the following order
We can now build complex Boolean expressions to answer questions such as the one posed by this word problem:
Jane is usually paid on the last day of the month. Jane is never paid on a weekend or holiday with one exception: if the month is December or June, then Jane can be paid on a weekend or holiday if necessary. Is Jane getting paid today?
We need the following independent variables:
L - true if today is the last day of the month
W - true if today is a weekend or holiday
M - true if the month is December or June
The expression to compute whether Jane is paid today would be expressed as:
This expression is true if today is the last day of the month and it is not a weekend or holiday, or its is December or June. A truth table to compute this value could be built up component by component. The truth table below shows this method:
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
Next Section:
Boolean Algebra
Previous Section: Basic Logic Operations
and Truth Tables
Return to
Module Index