Assume a linear code with (4,2) where we want to encode 2-bit data to 4-bit data. The generator (G) matrix is

`1 0 0 0 0 1 1 0 `

Now, if we want to encode `00`

, we get

`[0 0] * [1 0 0 0] = [0 0 0 0] [0 1 1 0] `

Also the parity check matrix (H) matrix is

`0 1 1 0 0 0 0 1 `

and assume the received data is `0100`

where a single bit error occurs on the second bit (from left to right).

Multiplying `H.C_received`

, we get

` [0] [0 1 1 0] * [1] = [10] [0 0 0 1] [0] [0] `

So the syndrome is not zero means there is an error in the received data. BUT, the value of syndrome `10`

matches second and third column of the H matrix.

So, how do we find out exactly that the second bit is faulty?