IV. CÁC PHƯƠNG PHÁP MÃ HĨA DỮ LIỆU:
3. Mã sửa sa i Mã Hammin g:
Nếu chỉ sử dụng n bit cho mỗi ký tự để truyền dữ liệu từ một bộ ký tự cĩ 2n ký tự – là điều cĩ hiệu quả nhất – nhưng nơi thu sẽ khơng thể phát hiện được lỗi vì nếu một ký tự nào đĩ sai một bit thì nơi thu sẽ hiểu là một ký tự khác . Nếu chúng ta thêm vào một bit dư cho mỗi ký tự và sử dụng (n + 1) bits , nơi thu cĩ thể phát hiện được lỗi . Điều này tương ứng với việc dùng 1 bit để kiểm tra chẵn lẻ và do đĩ người ta thường gởi 8 bit trong mỗi mã ASCCII 7 bit .
Richard Hamming đã đưa ra khái niệm về khoảng cách mã ( code distance ) . Khoảng cách Hamming giữa 2 từ mã là số bit khác nhau của 2 từ mã này . Ví dụ mã ASCII đối với chữ B là 1000010 và đối với chữ C là 1000011 cĩ khoảng cách Hamming là 1 vì chúngchỉ khác nhau 1 bit – nếu thêm vào bit kiểm tra parity chẵn – mã ASCII của B là 01000010 và của C là 11000011 . Lúc này chúng cĩ 2 bit khác nhau và khoảng cách Hamming là 2 .
Bằng cách thêm một số bit kiểm tra vào các bit của mỗi mã ký tư,ï ta cĩ thể cho phép nơi thu khơng chỉ phát hiện mà cịn sửa sai được bit lỗi . Hamming đã đưa ra các thủ tục để thực hiện điều này và mã tạo thành được gọi là mã Hamming . Ơng đã cơng bố các phương trình cho phép tính tốn số bit kiểm tra cần thiết cho mỗi ký tự về các giá trị và vị trí của chúng trong khi phát tuần tự.
Để minh họa ứng dụng của các mã sửa sai Hamming , giả sử ta muốn mã hĩa 16 số hex từ 00H đến 0FH . Bằng cách sử dụng các mã 7 bit thay vì 4 bit , nơi thu cĩ thể phát hiện được các cặp bit sai và sửa đúng 1 bit .
7 bit của mỗi mã gồm cĩ 4 bit thơng tin : m3 , m2 , m1 , m0 và 3 bit kiểm tra c2 , c1 , c0 . Các bit của mỗi từ mã được sắp teo thứ tự m3m2m1c2m0c1c0 .
3 bit kiểm tra được tính bằng cách EX-OR các bit thơng tin như sau :
c0 = m0 + m1 + m3 c1 = m0 + m2 + m3 c2 = m0 + m2 + m3 Ví dụ : Xét từ mã của A : m3m2m1m0 = 1010 ( AH ) c0 = 0 + 1 + 1 = 0 c1 = 0 + 0 + 1 = 1 c2 = 1 + 0 + 1 = 0
Vì vậy tư mã của AH trở thành 1010010 ( m3m2m1c2m0c1c2 ) . Khi nơi thu nhận được 1 tư mã , máy thu sẽ tính 3 bit kiểm tra chẵn lẻ như sau :
Po = 0 + 0 + 1 + 1 = 0 P1 = 1 + 0 + 1 + 1 = 1 P2 = 0 + 1 + 1 + 1 = 1
Từ đĩ ta biết cĩ lỗi ở vị trí bit : P2P1P0 = 110 là vị trí bit thứ 6 .
Muốn biết nhiều hơn về mã HAMMING ta cĩ thể tìm đọc cuốn Coding and Information Theory ( Englewood Cliffs . N.J : Prentice Hall. Inc . 1980 ) .