Hamming code
In
telecommunication, a
Hamming code is an
errordetecting and
errorcorrecting code, used in
data transmission, that can (a) detect all single and double
bit errors and (b) correct all singlebit errors. It was named after its inventor:
Richard Hamming.
Note: A Hamming code satisfies the relation 2^{m} ≥ n+1, where n is the total number of bits in the block, k is the number of information bits in the block, and m is the number of check bits in the block, where m = n k .
Let us examine the Hamming (7, 4) code.
We write a matrix

(note each column is a binary digit) and we create a codeword vector:

where a, b, and c are check digits, created by making the multiplication Hc=0.
Writing out the multiplication, we end up with
 a=d_{0}+d_{1}+d_{3},
 b=d_{0}+d_{2}+d_{3}
 c=d_{1}+d_{2}+d_{3}
and we send the codeword c with these values.
On decoding, assume one error has occurred in the received codeword r. (this Hamming code cannot detect when more than one error has occurred).
If no error has occurred, we have constructed the codeword to be sent so Hc=0 so we can check this. Say an error has occurred in the ith place, so
 r=c+e_{i}
where e_{i} is a vector with a 1 in the ith place and zeroes otherwise.
Then
 Hr=Hc+He_{i}
Now Hc=0, so
 Hr=0+He_{i}=He_{i}
picking out the ith column of H, and thus since this column is a binary digit (say k), we can correct the error in the kth place of the received codeword.
Source: from Federal Standard 1037C
See also: Hamming distance