Practically, a truth table is composed of one column for each input variable (for example, A and B), and one final column for all of the possible results of the logical operation that the table is meant to represent (for example, A XOR B). Each row of the truth table therefore contains one possible configuration of the input variables (for instance, A=true B=false), and the result of the operation for those values. See the examples below for further clarification. Ludwig Wittgenstein is often credited with their invention in the Tractatus Logico-Philosophicus,[1] though they appeared at least a year earlier in a paper on propositional logic by Emil Leon Post.[2]

Here is a truth table giving definitions of all 16 of the possible truth functions of two binary variables (P and Q are thus boolean variables: information about notation may be found in Bocheński (1959), Enderton (2001), and Quine (1982); for details about the operators see the Key below):

where T = true and F = false. The Com row indicates whether an operator, op, is commutative - P op Q = Q op P. The L id row shows the operator's left identities if it has any - values I such that I op Q = Q. The R id row shows the operator's right identities if it has any - values I such that P op I = P.[note 1]

The four combinations of input values for p, q, are read by row from the table above. The output function for each p, q combination, can be read, by row, from the table.

Key:

The key is oriented by column, rather than row. There are four columns rather than four rows, to display the four combinations of p, q, as input.

p: T T F Fq: T F T F

There are 16 rows in this key, one row for each binary function of the two binary variables, p, q. For example, in row 2 of this Key, the value of Converse nonimplication is solely T, for the column denoted by the unique combination p=F, q=T; while in row 2, the value of that '' operation is F for the three remaining columns of p, q. The output row for is thus

The logical NAND is an operation on two logical values, typically the values of two propositions, that produces a value of false if both of its operands are true. In other words, it produces a value of true if at least one of its operands is false.

The truth table for p NAND q (also written as p ↑ q, Dpq, or p | q) is as follows:

Logical NAND

p

q

p ↑ q

T

T

F

T

F

T

F

T

T

F

F

T

It is frequently useful to express a logical operation as a compound operation, that is, as an operation that is built up or composed from other operations. Many such compositions are possible, depending on the operations that are taken as basic or "primitive" and the operations that are taken as composite or "derivative".

In the case of logical NAND, it is clearly expressible as a compound of NOT and AND.

The negation of a conjunction: ¬(p ∧ q), and the disjunction of negations: (¬p) ∨ (¬q) can be tabulated as follows:

The truth table for p NOR q (also written as p ↓ q, Xpq, ¬(p ∨ q)) is as follows:

Logical NOR

p

q

p ↓ q

T

T

F

T

F

F

F

T

F

F

F

T

The negation of a disjunction ¬(p ∨ q), and the conjunction of negations (¬p) ∧ (¬q) can be tabulated as follows:

p

q

p ∨ q

¬(p ∨ q)

¬p

¬q

(¬p) ∧ (¬q)

T

T

T

F

F

F

F

T

F

T

F

F

T

F

F

T

T

F

T

F

F

F

F

F

T

T

T

T

Inspection of the tabular derivations for NAND and NOR, under each assignment of logical values to the functional arguments p and q, produces the identical patterns of functional values for ¬(p ∧ q) as for (¬p) ∨ (¬q), and for ¬(p ∨ q) as for (¬p) ∧ (¬q). Thus the first and second expressions in each pair are logically equivalent, and may be substituted for each other in all contexts that pertain solely to their logical values.

For binary operators, a condensed form of truth table is also used, where the row headings and the column headings specify the operands and the table cells specify the result. For example Boolean logic uses this condensed truth table notation:

∧

F

T

F

F

F

T

F

T

∨

F

T

F

F

T

T

T

T

This notation is useful especially if the operations are commutative, although one can additionally specify that the rows are the first operand and the columns are the second operand. This condensed notation is particularly useful in discussing multi-valued extensions of logic, as it significantly cuts down on combinatoric explosion of the number of rows otherwise needed. It also provides for quickly recognizable characteristic "shape" of the distribution of the values in the table which can assist the reader in grasping the rules more quickly.

When using an integer representation of a truth table, the output value of the LUT can be obtained by calculating a bit index k based on the input values of the LUT, in which case the LUT's output value is the kth bit of the integer. For example, to evaluate the output value of a LUT given an array of n boolean input values, the bit index of the truth table's output value can be computed as follows: if the ith input is true, let Vi = 1, else let Vi = 0. Then the kth bit of the binary representation of the truth table is the LUT's output value, where k = V0*2^0 + V1*2^1 + V2*2^2 + ... + Vn*2^n.

Truth tables are a simple and straightforward way to encode boolean functions, however given the exponential growth in size as the number of inputs increase, they are not suitable for functions with a large number of inputs. Other representations which are more memory efficient are text equations and binary decision diagrams.

In digital electronics and computer science (fields of applied logic engineering and mathematics), truth tables can be used to reduce basic boolean operations to simple correlations of inputs to outputs, without the use of logic gates or code. For example, a binary addition can be represented with the truth table:

Note that this table does not describe the logic operations necessary to implement this operation, rather it simply specifies the function of inputs to output values.

With respect to the result, this example may be arithmetically viewed as modulo 2 binary addition, and as logically equivalent to the exclusive-or (exclusive disjunction) binary logic operation.

In this case it can be used for only very simple inputs and outputs, such as 1s and 0s. However, if the number of types of values one can have on the inputs increases, the size of the truth table will increase.

For instance, in an addition operation, one needs two operands, A and B. Each can have one of two values, zero or one. The number of combinations of these two values is 2×2, or four. So the result is four possible outputs of C and R. If one were to use base 3, the size would increase to 3×3, or nine possible outputs.

The first "addition" example above is called a half-adder. A full-adder is when the carry from the previous operation is provided as input to the next adder. Thus, a truth table of eight rows would be needed to describe a full adder's logic:

Irving Anellis has done the research to show that C.S. Peirce appears to be the earliest logician (in 1893) to devise a truth table matrix. From the summary of his paper:

In 1997, John Shosky discovered, on the verso of a page of the typed transcript of Bertrand Russell's 1912 lecture on "The Philosophy of Logical Atomism" truth table matrices. The matrix for negation is Russell's, alongside of which is the matrix for material implication in the hand of Ludwig Wittgenstein. It is shown that an unpublished manuscript identified as composed by Peirce in 1893 includes a truth table matrix that is equivalent to the matrix for material implication discovered by John Shosky. An unpublished manuscript by Peirce identified as having been composed in 1883-84 in connection with the composition of Peirce's "On the Algebra of Logic: A Contribution to the Philosophy of Notation" that appeared in the American Journal of Mathematics in 1885 includes an example of an indirect truth table for the conditional.

^The operators here with equal left and right identities (XOR, AND, XNOR, and OR) are also commutative monoids because they are also associative. While this distinction may be irrelevant in a simple discussion of logic, it can be quite important in more advanced mathematics. For example, in category theory an enriched category is described as a base category enriched over a monoid, and any of these operators can be used for enrichment.