12 34 56 8 Dạng I0N(S)P/F N(R)
3.8.3.4 Mã sửa sa i Mã Hamming
Vấn đề là: nếu khi mã hóa mỗi ký tự ta xử dụng n bit thì với n bit ta có được 2n ký tự. Nhưng nếu như vậy thì vấn đề tìm sai và sửa sai khơng thể thực hiện được.
Nếu ta thêm 1 bit để kiểm tra thì có thể tìm được những sai sót đơn giản (như VRC, LRC). Ơng Hamming của phịng thí nghiệm Bell đưa ra một đề án về mã khoảng cách.
Theo Hamming: khoảng cách Hamming giữa 2 từ mã bằng số lượng bit khác nhau giữa chúng.
Ví dụ:
B = 1000010
C = 1000011 Khoảng cách là 1 Nếu có P ® B = 01000010 C = 11000011 Khoảng cách là 2
Điều đó cho ta khả năng ở bộ thu sau khi kiểm tra có thể sửa sai trong một giới hạn nào đó bit sai. Hamming đã phát triển nó thành mã Hamming. Để có thể thấy được rõ ràng tác dụng đó, ta có thể lấy ví dụ cho hệ 16 (016 ¾ F16). Thơng thường để biểu thị từ 0 – F ta chỉ cần 4 bit. Nếu dùng 7 bit để biểu thị, ở bộ thu chúng ta có thể phát hiện được 2 bit sai và có thể sửa từng bit.
7 bit của từ mã bao gồm: 4 bit biểu thị thông báo m3 m2 m1 m0 và 3 bit kiểm tra C2 C1 C0. Mỗi từ mã có dạng m3 m2 m1 C2 m0 C1 C0 .
Các giá trị của C2 C1 C0 được tính như sau: C0 = m0 Å m1 Å + m3
C1 = m0 Å m2 Å + m3 C2 = m1 Å m2 Å + m3
Ví dụ: mã cho chữ A16 là: m3 m2 m1 m0 = 1010 (A16 ) C0 = 0 Å 1 Å 1 = 0
C1 = 0 Å 0 Å 1 = 1 C2 = 1 Å 0 Å 1 = 0
Vậy A theo mã Hamming là: 1010010
Khi bộ phận thu thu được một từ mã, có thể tính lại 3 giá trị kiểm tra: P0; P1; P2 như sau: P0 = C0 Å m0 Å m1 Å + m3
P1 = C1 Å m0 Å m2 Å + m3 P2 = C2 Å m1 Å m2 Å + m3
Nếu P0 = P1 = P2 = 0 thì phép truyền khơng gây sai số. Nếu có sai ta dựa vào giá trị nhị phân của P2; P1; P0 mà xác định vị trí sai.
Ví dụ: ta nhận được thơng tin 1110010
Ta có:
P0 = 0 Å 0 Å 1 Å 1 = 0
P1 = 1 Å 0 Å 1 Å 1 = 1 110 Þ 6 P2 = 0 Å 1 Å 1 Å 1 = 1
Vậy bit thứ 6 sai.