Boolean expressions of two variables

Since any two boolean expressions with the same truth table are equivalent we can enumerate all the boolean expressions of a given number of variables. For instance with two variables, a and b there are four different combinations of possible values (i.e. 22) In other words, if we wrote out the truth table for an expression involving those two variables we would need four rows. For instance here's the truth table for a && b:

a b a && b
false false false
false true false
true false false
true true true

And since the value in each row of the final column is either true or false, there are only 24 possible unique truth tables. Thus any boolean expression of two variables must be equivalent to one of just sixteen distinct boolean expressions.

The table below shows the canonical form of those sixteen expressions with the corresponding final column from the truth table flipped into a row. If applicable, the “DeMorgan'd” column contains the equivalent obtained by applying one of DeMorgan’s Laws. Note also that some of the expressions don't actually use both variables; two of them don't use them at all! But these are all the possible truth tables for two-variable expressions. Thus if you ever have a boolean expression of just two variables that is more complicated than the expressions here, you can definitely simplify it as it must be equivalent to one of these.

Expression DeMorgan’d a = false
b = false
a = false
b = true
a = true
b = false
a = true
b = true
Name
false false false false false Contradiction
a && b !(!a || !b) false false false true And
a && !b !(!a || b) false false true false
a false false true true
!a && b !(a || !b) false true false false
b false true false true
a != b !(a == b) false true true false XOR (Exclusive Or)
a || b !(!a && !b) false true true true Or
!(a || b) !a && !b true false false false NOR (Not Or)*
a == b !(a != b) true false false true Logical Equality or XNOR (Exclusive NOR)
!b true false true false
a || !b !(!a && b) true false true true
!a true true false false
!a || b !(a && !b) true true false true
!(a && b) !a || !b true true true false NAND (Not AND)*
true true true true true Tautology

*Fun fact about NAND and NOR: all boolean operators can be built from some combination of NANDs or from some combination of NORs. In digital circuits (which are built out of “logic gates” that correspond to the basic boolean operators) this means that any computer circuit can be built entirely out of exclusively NAND gates wired together into an appropriate configuration or exclusively from NOR gates.