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.

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.

Source: from Federal Standard 1037C

See also: Hamming distance