Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
What is Error Correction?
Error correction is a method used in data communication to automatically detect and fix errors at the receiver end without requiring retransmission. Unlike error detection which only identifies errors, error correction enables the receiver to restore the original data by using redundant bits added to the transmitted message.
In error correction, each k-bit block of data is combined with redundant bits to create an n-bit codeword (where n > k). A Forward Error Correction (FEC) encoder adds these redundant bits at the transmission end, and the complete codeword is transmitted over the communication channel.
How Error Correction Works
At the receiver, the FEC decoder processes the received codeword and can handle three scenarios:
-
No errors detected − The decoder extracts the original data directly from the received codeword.
-
Correctable errors − The decoder identifies and automatically corrects the errors, then extracts the original data.
-
Uncorrectable errors − The decoder detects errors but cannot correct them, reporting an uncorrectable error condition.
Hamming Code Example
Hamming codes are widely used for single-bit error correction. In this example, we use a (11,7) Hamming code where 7 data bits are protected by 4 check bits placed at positions that are powers of 2 (positions 1, 2, 4, and 8).
Consider the data bits: 1001101
| Bit Position | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Bit Value | 1 | 0 | 0 | x | 1 | 1 | 0 | x | 1 | x | x |
The check bits (marked with x) are calculated using modulo-2 arithmetic. For each check bit position, we XOR all data bit positions whose binary representation contains a 1 in the corresponding check bit position.
Check bit calculation: 11 = 1011 7 = 0111 6 = 0110 3 = 0011 XOR: 1011 (check bits = 1,0,0,1)
The transmitted codeword becomes:
| Bit Position | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Bit Value | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
Error Detection and Correction at Receiver
At the receiver, we recalculate the check bits using the same method. If no errors occurred, the modulo-2 sum should be zero:
Error checking (no errors): 11 = 1011 8 = 1000 7 = 0111 6 = 0110 3 = 0011 1 = 0001 XOR: 0000 (no error detected)
If bit 11 is corrupted from 1 to 0, the error syndrome becomes:
Error checking (bit 11 corrupted): 8 = 1000 7 = 0111 6 = 0110 3 = 0011 1 = 0001 XOR: 1011 (binary) = 11 (decimal)
The non-zero result indicates an error, and the decimal value 11 points directly to the corrupted bit position, enabling automatic correction.
Conclusion
Error correction automatically detects and fixes transmission errors using redundant bits, eliminating the need for retransmission. Hamming codes exemplify this approach by using strategically placed check bits to identify and correct single-bit errors efficiently.
