Hamming (7,4) Example – Step by Step
Data bits: D = [1,0,1,1]
Step 1: Parity-Check Matrix H
H =
[1 0 1 0 1 0 1
0 1 1 0 0 1 1
0 0 0 1 1 1 1]
[1 0 1 0 1 0 1
0 1 1 0 0 1 1
0 0 0 1 1 1 1]
Parity bits are at positions 1,2,4; data bits at positions 3,5,6,7.
Step 2: Extract P from H
Using standard form H = [P^T | I], we get:
P^T (columns 3,5,6,7) =
[1 1 0 1
1 0 1 1
0 1 1 1]
[1 1 0 1
1 0 1 1
0 1 1 1]
Transpose to get P:
P =
[1 1 0
1 0 1
0 1 1
1 1 1]
[1 1 0
1 0 1
0 1 1
1 1 1]
Step 3: Generator Matrix G = [I | P]
G =
[1 0 0 0 | 1 1 0
0 1 0 0 | 1 0 1
0 0 1 0 | 0 1 1
0 0 0 1 | 1 1 1]
[1 0 0 0 | 1 1 0
0 1 0 0 | 1 0 1
0 0 1 0 | 0 1 1
0 0 0 1 | 1 1 1]
Step 4: Encode Data → Codeword
Multiply D × G (mod 2):
D = [1 0 1 1]
C = D × G = [1 0 1 1 0 1 1]
(Codeword = [P1 P2 D1 P3 D2 D3 D4])
C = D × G = [1 0 1 1 0 1 1]
(Codeword = [P1 P2 D1 P3 D2 D3 D4])
Step 5: Transmission with Error
Assume bit 6 flips → Received codeword:
R = [1 0 1 1 0 0 1]
Step 6: Compute Syndrome S = H × R^T
s1 = r1⊕r3⊕r5⊕r7 = 1⊕1⊕0⊕1 = 1
s2 = r2⊕r3⊕r6⊕r7 = 0⊕1⊕0⊕1 = 0
s3 = r4⊕r5⊕r6⊕r7 = 1⊕0⊕0⊕1 = 0
S = [s3 s2 s1] = [0 0 1]
s2 = r2⊕r3⊕r6⊕r7 = 0⊕1⊕0⊕1 = 0
s3 = r4⊕r5⊕r6⊕r7 = 1⊕0⊕0⊕1 = 0
S = [s3 s2 s1] = [0 0 1]
Binary 001 → Position 6 (the flipped bit)
Step 7: Correct Error
Flip bit 6 → Corrected codeword:
Corrected R = [1 0 1 1 0 1 1] = C
Summary:
✔ Data bits = 4
✔ Parity bits = 3
✔ Codeword = 7 bits
✔ Can correct 1-bit errors
✔ Can detect up to 2-bit errors
✔ Data bits = 4
✔ Parity bits = 3
✔ Codeword = 7 bits
✔ Can correct 1-bit errors
✔ Can detect up to 2-bit errors