In coding theory, the dual code of a linear code

is the linear code defined by


is a scalar product. In linear algebra terms, the dual code is the annihilator of C with respect to the bilinear form . The dimension of C and its dual always add up to the length n:

A generator matrix for the dual code is a parity-check matrix for the original code and vice versa. The dual of the dual code is always the original code.

Self-dual codes

A self-dual code is one which is its own dual. This implies that n is even and dim C = n/2. If a self-dual code is such that each codeword's weight is a multiple of some constant , then it is of one of the following four types:[1]

Codes of types I, II, III, or IV exist only if the length n is a multiple of 2, 8, 4, or 2 respectively.

If a self-dual code has a generator matrix of the form , then the dual code has generator matrix , where is the identity matrix and .


  1. ^ Conway, J.H.; Sloane,N.J.A. (1988). Sphere packings, lattices and groups. Grundlehren der mathematischen Wissenschaften. 290. Springer-Verlag. p. 77. ISBN 0-387-96617-X.