Q. Explain about Hamming error correcting code?
Richard Hamming at Bell Laboratories worked out this code. We will only introduce this code with help of an illustration for 4 bit data. Let's presume a 4 bit number b4, b3, b2, b1. In order to create a simple error detection code which detects error in one bit only we can just add an odd parity bit. Though if we want to find which bit is in error then we may have to employ parity bits for different combinations of these 4 bits in such a way that a bit error can be recognized uniquely. For illustration we can create four parity sets as below
Source Parity Destination Parity
b1, b2, b3 P1 D1
b2, b3, b4 P2 D2
b3, b4, b1 P3 D3
b1, b2, b3, b4 P4 D4
Now very interesting phenomenon can be noticed in above displayed parity pairs. Assume data bit b1 is in error on transmission then it will cause alteration in destination parity D1, D3, D4.
ERROR IN Cause change in Destination Parity
(One bit only)
b1 D1, D3, D4
b2 D1, D2, D4
b3 D1, D2, D3, D4
b4 D2, D3, D4
Figure: The error detection parity code mismatch
So by simply comparing parity bits of source and destination we can recognize that which of four bits is in error. This bit then can be complemented to eliminate error. Please note that even source parity bit can be in error on transmission but under assumption that just one bit (irrespective of data or parity) is in error it would be detected as just one destination parity would be different. What should be length of error detection code that detects error in one bit? Before responding this question we have to look in comparison logic of error detection. Error detection is done by comparing two ‘i’ bit error detection and correction codes fed to comparison logic bit by bit (see figure below). Let’s have comparison logic that produces a zero if compared bits are same or else it generates a one. Consequently if similar Position bits are similar then we obtained zero at that bit Position however if they are dissimilar that is this bit position may point to an error then this Particular bit position would be marked as one. This way a matching word is built. This matching word is ‘i’ bit long so can signify 2i values or combinations.