Prove how many errors CRC code can detect

1.3k Views Asked by At

I'm having that question:

The code: let $m$ be some binary word when $|m|<32000$. Create a word $m'$ that is the word $m$ with a parity bit. Now encode $m'$ with CRC with the generator polynomial $x^{15}+x^{14}+1$.

Prove that this code can detect every one, two or three errors.

Ok, so the every one error is easy: The error polynomial of one bit is $x^i$ when $0<=i<32000$. If the generator polynomial contains an $x^0$ term, it will not have $x^k$ factor, so the reminder can never be zero.

Every two errors is also easy: The error polynomial of two bits is $x^j(x^{i-j}+1)$ when $0<=i<j<32000$. Since $x^{15}+x^{14}+1$ dose not divide by $x$, we need to check only $(x^{i-j}+1)$. But $x^{15}+x^{14}+1$ will not divide $x^k+1$ for any value of $k<32768$ and the code word length is less then 32000. So the the code will detect every two errors.

But I have problems with three errors. If the error polynomial will be $x^3(x^{15}+x^{14}+1) = x^{18}+x^{17}+x^3$, it will divide by $x^{15}+x^{14}+1$ and the reminder will be zero. Then the CRC will not detect the error. So we need to check the parity bit. But since the parity bit created before the CRC, it can check only the bits that are in position $i$ where $16<=i<=|m|$. But since the error polynomial is $x^{18}+x^{17}+x^3$ only the bits 17 and 18 will be checked, and because there are only two errors in this range, the parity bit will also miss the error.

So how can I prove that this code can detect every three errors with that example?