The Hamming code reference article from the English Wikipedia on 24-Jul-2004 (provided by Fixed Reference: snapshots of Wikipedia from wikipedia.org)

# Hamming code

See the real Africa
In telecommunication, a Hamming code is an error-detecting and error-correcting code, used in data transmission, that can (a) detect all single- and double-bit errors and (b) correct all single-bit errors. It was named after its inventor, Richard Hamming.

Note: A Hamming code satisfies the relation 2mn+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 .

## Hamming codes in action

Let us examine the Hamming (7, 4) code, in which n=7 and k=4.

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=d0+d1+d3,
b=d0+d2+d3
c=d1+d2+d3

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+ei
where ei is a vector with a 1 in the ith place and zeroes otherwise.

Then

Hr=Hc+Hei

Now Hc=0, so
Hr=0+Hei=Hei

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.