Trong vien thong (telecommunication), ma Hamming la mot ma sua loi tuyen tinh (linear error-correcting code), đuoc đat ten theo ten cua nguoi phat minh ra no,  [./Https://en.wikipedia.org/wiki/Richard_Hamming Richard Hamming]. Ma Hamming co the phat hien mot bit hoac hai bit bi loi (single and double-bit errors). Ma Hamming con co the sua cac loi do mot bit bi sai gay ra. Nguoc lai voi ma cua ong, ma chan le (parity code) đon gian vua khong co kha nang phat hien cac loi khi 2 bit cung mot luc bi hoan vi (0 thanh 1 va nguoc lai), vua khong the giup đe sua đuoc cac loi ma no phat hien đuoc.


Lich su Trong nhung nam cua thap nien ky 1940, Hamming lam viec tai Bell Labs tren may tinh Bell Model V, mot may đien co (electromechanical) dung ro-le (relay-based), voi toc đo rat cham, may giay đong ho mot chu ky may.  Nhap lieu đuoc cho vao may bang nhung cai the đuc lo (punch cards), va hau nhu may luon luon gay loi trong khi đoc. Trong nhung ngay lam viec trong tuan, nhung ma đac biet đuoc dung đe tim ra loi va moi khi tim đuoc, no nhap nhay đen bao hieu, bao cho nguoi đieu khien biet đe ho sua, đieu chinh may lai. Trong thoi gian ngoai gio lam viec hoac trong nhung ngay cuoi tuan, khi nguoi đieu khien may khong co mat, moi khi co loi xay ra, may tinh tu đong bo qua chuong trinh đuong chay va chuyen sang cong viec khac.
Hamming thuong lam viec trong nhung ngay cuoi tuan va ong cang ngay cang tro nen buc tuc moi khi ong phai khoi đong lai cac chuong trinh ung dung tu đau, do chat luong kem, khong đang tin cay (unreliability) cua bo may đoc cac the đuc lo. May nam tiep theo đo, ong don tam luc vao viec xay dung hang loat cac thuat toan co hieu qua cao đe giai quyet van đe sua loi. Nam 1950, ong đa cong bo mot phuong phap ma hien nay đuoc biet la Ma Hamming. Mot so chuong trinh ung dung hien thoi van con su dung ma nay cua ong.


Cac ma truoc thoi ky cua Hamming Nhieu ma phat hien loi đon gian đa đuoc su dung truoc khi co ma Hamming, nhung khong co ma nao hieu qua bang ma Hamming voi mot tong phi tuong đuong.


= Ma chan le =

Ma chan le them mot bit vao trong du lieu, va bit cho them nay cho biet so luong bit co gia tri 1 cua đoan du lieu nam truoc la mot so chan hay mot so le. Neu mot bit bi thay đoi trong qua trinh truyen du lieu, gia tri chan le trong thong điep se thay đoi va do đo co the phat hien đuoc loi (Chu y rang bit bi thay đoi co the lai chinh la bit kiem tra). Theo quy uoc chung, bit kiem tra co gia tri bang 1 neu so luong bit co gia tri mot trong du lieu la mot so le, va gia tri cua bit kiem tra bang 0 neu so luong bit co gia tri mot trong du lieu la mot so chan. Noi cach khac, neu đoan du lieu va bit kiem tra đuoc gop lai cung voi nhau, so luong bit co gia tri bang 1 luon luon la mot so chan.
Viec kiem tra dung ma chan le la mot viec khong đuoc chac chan cho lam, vi neu so bit bi thay đoi la mot so chan (2, 4, 6 - ca hai, bon hoac sau bit đeu bi hoan vi) thi ma nay khong phat hien đuoc loi. Hon nua, ma chan le khong biet đuoc bit nao la bit bi loi, ke ca khi no phat hien la co loi xay ra. Toan bo du lieu đa nhan đuoc phai bo đi, va phai truyen lai tu đau. Tren mot kenh truyen bi nhieu, viec truyen nhan thanh cong co the mat rat nhieu thoi gian, nhieu khi con khong truyen đuoc nua. Mac du viec kiem tra bang ma chan le khong đuoc tot cho lam, song vi no chi dung 1 bit đe kiem tra cho nen no co so tong phi (overhead) thap nhat, đong thoi, no cho phep phuc hoi bit bi that lac neu nguoi ta biet đuoc vi tri cua bit bi that lac nam o đau.


= Ma hai-trong-nam =
Trong nhung nam cua thap nien ky 1940, Bell co su dung mot ma hieu phuc tap hon mot chut, goi la ma hai-trong-nam (two-out-of-five code). Ma nay đam bao moi mot khoi 5 bit (con đuoc goi la khoi-5) co chinh xac hai bit co gia tri bang 1. May tinh co the nhan ra la du lieu nhap vao co loi neu trong mot khoi 5 bit khong 2 bit co gia tri bang 1. Tuy the, ma hai-trong-nam cung chi co the phat hien đuoc mot đon vi bit ma thoi; neu trong cung mot khoi, mot bit bi lon nguoc thanh gia tri 1, va mot bit khac bi lon nguoc thanh gia tri 0, quy luat hai-trong-nam van cho mot gia tri đung (remained true), va do đo no khong phat hien la co loi xay ra.


= Tai dien du lieu =
Mot ma nua đuoc dung trong thoi gian nay la ma hoat đong bang cach nhac đi nhac lai bit du lieu vai lan (tai dien bit đuoc truyen) đe đam bao bit du lieu đuoc truyen, truyen đen noi nhan tron ven. Chang han, neu bit du lieu can đuoc truyen co gia tri bang 1, mot ma tai dien n=3 se cho truyen gui gia tri "111". Neu ba bit nhan đuoc khong giong nhau, thi hien trang nay bao cho ta biet rang, loi trong truyen thong đa xay ra. Neu kenh truyen khong bi nhieu, tuong đoi đam bao, thi voi hau het cac lan truyen, trong nhom ba bit đuoc gui, chi co mot bit la bi thay đoi. Do đo cac nhom 001, 010, va 100 đeu tuong đuong cho mot bit co gia tri 0, va cac nhom 110, 101, va 011 đeu tuong đuong cho mot bit co gia tri 1 - luu y so luong bit co gia tri 0 trong cac nhom đuoc coi la co gia tri 0, la đa so so voi tong so bit trong nhom, hay 2 trong 3 bit, tuong đuong nhu vay, cac nhom đuoc coi la gia tri 1 co so luong bit bang 1 nhieu hon la cac bit co gia tri 0 trong nhom - chang khac gi viec cac nhom bit đuoc đoi xu nhu la "cac phieu bau" cho bit du lieu goc vay. Mot ma co kha nang tai dung lai thong điep goc trong mot moi truong nhieu loi đuoc goi la ma "sua loi" (error-correcting code).
Tuy nhien, nhung ma nay khong the sua tat ca cac loi mot cach đung đan hoan toan. Chang han chung ta co mot vi du sau: neu mot kenh truyen đao nguoc hai bit va do đo may nhan thu đuoc gia tri "001", he thong may se phat hien la co loi xay ra, song lai ket luan rang bit du lieu goc la bit co gia tri bang 0. Đay la mot ket luan sai lam. Neu chung ta tang so lan cac bit đuoc nhac lai len 4 lan, chung ta co the phat hien tat ca cac truong hop khi 2 bit bi loi, song chung ta khong the sua chua chung đuoc (so phieu bau "hoa"); voi so lan nhac lai la 5 lan, chung ta co the sua chua tat ca cac truong hop 2 bit bi loi, song khong the phat hien ra cac truong hop 3 bit bi loi.
Noi chung, ma tai dien la mot ma het suc khong hieu qua, giam cong suat xuong 3 lan so voi truong hop đau tien trong vi du tren cua chung ta, va cong suat lam viec giam xuong mot cach nhanh chong neu chung ta tang so lan cac bit đuoc nhac lai voi muc đich đe sua nhieu loi hon.

Cang nhieu bit sua loi them vao trong thong điep, va cac bit ay đuoc bo tri theo mot cach la moi bo tri cua nhom cac bit bi loi tao nen mot hinh thai loi rieng biet, thi chung ta co the xac đinh đuoc nhung bit bi sai. Trong mot thong điep dai 7-bit, chung ta co 7 kha nang mot bit co the bi loi, nhu vay, chi can 3 bit kiem tra (23 = 8) la chung ta co the, khong nhung chi xac đinh đuoc la loi trong truyen thong co xay ra hay khong, ma con co the xac đinh đuoc bit nao la bit bi loi.
Hamming nghien cuu cac ke hoach ma hoa hien co, bao gom ca ma hai-trong-nam, roi tong quat hoa khai niem cua chung. Khoi đau, ong xay dung mot danh muc (nomenclature) đe dien ta he thong may, bao gom ca so luong bit dung cho du lieu va cac bit sua loi trong mot khoi. Chang han, bit chan le phai them 1 bit vao trong moi tu du lieu (data word). Hamming dien ta phuong phap nay la ma (8,7). No co nghia la mot tu du lieu co tong so bit la 8 bit, trong đo chi co 7 bit la cac bit cua du lieu ma thoi. Theo phuong phap suy nghi nay, ma tai dien (nhac lai) o tren phai đuoc goi la ma (3,1). Ty le thong tin la ty le đuoc tinh bang viec lay con so thu hai chia cho con so thu nhat. Nhu vay voi ma tai dien (3,1) o tren, ty le thong tin cua no la 
  
    
      
        
          
            
              
                
                  
                    1
                    3
                  
                
              
            
          
        
      
    
    {\displaystyle {\begin{matrix}{\frac {1}{3}}\end{matrix}}}
  
.
Hamming con phat hien ra nan đe voi viec đao gia tri cua hai hoac hon hai bit nua, va mieu ta no la "khoang cach" (distance) (hien nay no đuoc goi la khoang cach Hamming (Hamming distance) - theo cai ten cua ong). Ma chan le co khoang cach bang 2, vi neu co 2 bit bi đao nguoc thi loi trong truyen thong tro nen vo hinh, khong phat hien đuoc. Ma tai dien (3,1) co khoang cach la 3, vi 3 bit, trong cung mot bo ba, phai bi đoi nguoc truoc khi chung ta đuoc mot tu ma khac. Ma tai dien (4,1) (moi bit đuoc nhac lai 4 lan) co khoang cach bang 4, nen neu 2 bit trong cung mot nhom bi đao nguoc thi loi đao nguoc nay se đi thoat ma khong bi phat hien.
Cung mot luc, Hamming quan tam đen hai van đe; tang khoang cach va đong thoi tang ty le thong tin len, cang nhieu cang tot. Trong nhung nam thuoc nien ky 1940, ong đa xay dung mot so ke hoach ma hoa. Nhung ke hoach nay đeu dua tren nhung ma đang ton tai song đuoc nang cap va tien bo mot cach sau sac. Bi quyet chia khoa cho tat ca cac he thong cua ong la viec cho cac bit chan le goi len nhau (overlap), sao cho chung co kha nang tu kiem tra lan nhau trong khi cung kiem tra đuoc du lieu nua.
Thuat toan cho viec su dung bit chan le trong 'ma Hamming' thong thuong cung tuong đoi đon gian:

Tat ca cac bit o vi tri la cac so mu cua 2 (powers of two) đuoc dung lam bit chan le. (cac vi tri nhu 1, 2, 4, 8, 16, 32, 64 v.v. hay noi cach khac 20, 21, 22, 23, 24, 25, 26 v.v.)
Tat ca cac vi tri bit khac đuoc dung cho du lieu se đuoc ma hoa. (cac vi tri 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, etc.)
Moi bit chan le tinh gia tri chan le cho mot so bit trong tu ma (code word). Vi tri cua bit chan le quyet đinh chuoi cac bit ma no luan phien kiem tra va bo qua (skips).
Vi tri 1 (n=1): bo qua 0 bit(n-1), kiem 1 bit(n), bo qua 1 bit(n), kiem 1 bit(n), bo qua 1 bit(n), v.v.
Vi tri 2(n=2): bo qua 1 bit(n-1), kiem 2 bit(n), bo qua 2 bit(n), kiem 2 bit(n), bo qua 2 bit(n), v.v.
Vi tri 4(n=4): bo qua 3 bit(n-1), kiem 4 bit(n), bo qua 4 bit(n), kiem 4 bit(n), bo qua 4 bit(n), v.v.
Vi tri 8(n=8): bo qua 7 bit(n-1), kiem 8 bit(n), bo qua 8 bit(n), kiem 8 bit(n), bo qua 8 bit(n), v.v.
Vi tri 16(n=16): bo qua 15 bit(n-1), kiem 16 bit(n), bo qua 16 bit(n), kiem 16 bit(n), bo qua 16 bit(n), v.v.
Vi tri 32(n=32): bo qua 31 bit(n-1), kiem 32 bit(n), bo qua 32 bit(n), kiem 32 bit(n), bo qua 32 bit(n), v.v.
va tiep tuc nhu tren.
Noi cach khac, bit chan le tai vi tri 2k kiem cac bit o cac bit o vi tri t co gia tri logic cua phep toan AND giua k va t la khac 0


Vi du dung (11,7) ma Hamming Lay vi du chung ta co mot tu du lieu dai 7 bit voi gia tri la "0110101". Đe chung minh phuong phap cac ma Hamming đuoc tinh toan va đuoc su dung đe kiem tra loi, xin xem bang liet ke duoi đay. Chu d (data) đuoc dung đe bieu thi cac bit du lieu va chu p (parity) đe bieu thi cac bit chan le (parity bits).
Đau tien, cac bit cua du lieu đuoc đat vao vi tri tuong thich cua chung, sau đo cac bit chan le cho moi truong hop đuoc tinh toan dung quy luat bit chan le so chan.

Nhom du lieu moi (new data word) - bao gom cac bit chan le - bay gio la "10001100101". Neu chung ta thu cho rang bit cuoi cung bi thoai hoa (gets corrupted) va bi lon nguoc tu 1 sang 0. Nhom du lieu moi se la "10001100100"; Duoi đay, chung ta se phan tich quy luat kien tao ma Hamming bang cach cho bit chan le gia tri 1 khi ket qua kiem tra dung quy luat so chan bi sai.

 chi so pk voi k=2 mu 0,1,2,3...m(p1 la lay 1 bo 1, p2 la lay 2 bo 2, p4 lay 4 bo 4)
Buoc cuoi cung la đinh gia tri cua cac bit chan le (nen nho bit nam duoi cung đuoc viet ve ben phai - viet nguoc lai tu duoi len tren).  Gia tri so nguyen cua cac bit chan le la 11(10), va nhu vay co nghia la bit thu 11 trong nhom du lieu (data word) - bao gom ca cac bit chan le - la bit co gia tri khong đung, va bit nay can phai đoi nguoc lai.

Viec đoi nguoc gia tri cua bit thu 11 lam cho nhom

10001100100
tro lai thanh 

10001100101.
Bang viec bo đi phan ma Hamming, chung ta lay đuoc phan du lieu goc voi gia tri la 

0110101.
Luu y, cac bit chan le khong kiem tra đuoc lan nhau, neu chi mot bit chan le bi sai thoi, trong khi tat ca cac bit khac la đung, thi chi co bit chan le noi đen la sai ma thoi va khong phai la cac bit no kiem tra (not any bit it checks).
Cuoi cung, gia su co hai bit bien đoi, tai vi tri x va y. Neu x va y co cung mot bit tai vi tri 2k trong đai dien nhi phan cua chung, thi bit chan le tuong ung voi vi tri đay kiem tra ca hai bit, va do đo se giu nguyen gia tri, khong thay đoi. Song mot so bit chan le nao đay nhat đinh phai bi thay đoi, vi x = y, va do đo hai bit tuong ung nao đo co gia tri x va y khac nhau. Do vay, ma Hamming phat hien tat ca cac loi do hai bit bi thay đoi — song no khong phan biet đuoc chung voi cac loi do 1 bit bi thay đoi.


Ma Hamming (7,4) Hien thoi, khi noi đen ma Hamming chung ta thuc ra la muon noi đen ma (7,4) ma Hamming cong bo nam 1950. Voi moi nhom 4 bit du lieu, ma Hamming them 3 bit kiem tra. Thuat toan (7,4) cua Hamming co the sua chua bat cu mot bit loi nao, va phat hien tat ca loi cua 1 bit, va cac loi cua 2 bit gay ra. Đieu nay co nghia la đoi voi tat ca cac phuong tien truyen thong khong co chum loi đot phat (burst errors) xay ra, ma (7,4) cua Hamming rat co hieu qua (tru phi phuong tien truyen thong co đo nhieu rat cao  thi no moi co the gay cho 2 bit trong so 7 bit truyen bi đao lon).


= Vi du ve cach dung cac ma tran thong qua GF(2) =
Nguyen ly cua ma Hamming bat nguon tu viec khai trien va mo rong quan điem chan le. Viec khai trien nay bat đau bang viec nhan cac ma tran, đuoc goi la Ma tran Hamming (Hamming matrices), voi nhau. Đoi voi ma Hamming (7,4), chung ta su dung hai ma tran co lien quan gan gui, va đat ten cho chung la:

  
    
      
        
          H
          
            e
          
        
        :=
        
          
            (
            
              
                
                  1
                
                
                  0
                
                
                  0
                
                
                  0
                
              
              
                
                  0
                
                
                  1
                
                
                  0
                
                
                  0
                
              
              
                
                  0
                
                
                  0
                
                
                  1
                
                
                  0
                
              
              
                
                  0
                
                
                  0
                
                
                  0
                
                
                  1
                
              
              
                
                  0
                
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  0
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  1
                
                
                  0
                
                
                  1
                
              
            
            )
          
        
      
    
    {\displaystyle H_{e}:={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\\0&1&1&1\\1&0&1&1\\1&1&0&1\\\end{pmatrix}}}
  

va

  
    
      
        
          H
          
            d
          
        
        :=
        
          
            (
            
              
                
                  0
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  0
                
                
                  1
                
                
                  1
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
              
            
            )
          
        
      
    
    {\displaystyle H_{d}:={\begin{pmatrix}0&0&0&1&1&1&1\\0&1&1&0&0&1&1\\1&0&1&0&1&0&1\\\end{pmatrix}}}
  

Cac cot vecto trong 
  
    
      
        
          H
          
            e
          
        
      
    
    {\displaystyle H_{e}}
  
 la nen tang hach cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 va phan tren cua 
  
    
      
        
          H
          
            e
          
        
      
    
    {\displaystyle H_{e}}
  
 (4 hang đau) la mot ma tran đon vi (identity matrix). Ma tran đon vi cho phep vecto du lieu đi qua trong khi lam tinh nhan, va nhu vay, cac bit du lieu se nam o 4 vi tri tren cung (sau khi nhan). Sau khi phep nhan hoan thanh, khac voi cach giai thich o phan truoc (cac bit chan le nam o vi tri 2k), trat tu cua cac bit trong tu ma (codewords) o đay khac voi cach bo tri đa noi (cac bit du lieu nam o tren, cac bit kiem chan le nam o duoi).
Chung ta dung mot nhom 4 bit du lieu (so 4 trong cai ten cua ma la vi vay) chu chot, va cong them vao đo 3 bit du lieu thua (vi 4+3=7 nen moi co so 7 trong cai ten cua ma). Đe truyen gui du lieu, chung ta hay nhom cac bit du lieu ma minh muon gui thanh mot vecto. Lay vi du, neu du lieu la "1011" thi vecto cua no la:

  
    
      
        
          p
        
        =
        
          
            (
            
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  1
                
              
            
            )
          
        
      
    
    {\displaystyle \mathbf {p} ={\begin{pmatrix}1\\0\\1\\1\end{pmatrix}}}
  

Gia su, chung ta muon truyen gui du lieu tren. Chung ta tim tich cua 
  
    
      
        
          H
          
            e
          
        
      
    
    {\displaystyle H_{e}}
  
 va p, voi cac gia tri mođulo 2 :

  
    
      
        
          H
          
            e
          
        
        
          p
        
        =
        
          
            (
            
              
                
                  1
                
                
                  0
                
                
                  0
                
                
                  0
                
              
              
                
                  0
                
                
                  1
                
                
                  0
                
                
                  0
                
              
              
                
                  0
                
                
                  0
                
                
                  1
                
                
                  0
                
              
              
                
                  0
                
                
                  0
                
                
                  0
                
                
                  1
                
              
              
                
                  0
                
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  0
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  1
                
                
                  0
                
                
                  1
                
              
            
            )
          
        
        
          
            (
            
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  1
                
              
            
            )
          
        
        =
        
          
            (
            
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  0
                
              
            
            )
          
        
        =
        
          r
        
      
    
    {\displaystyle H_{e}\mathbf {p} ={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&0&1\\0&1&1&1\\1&0&1&1\\1&1&0&1\\\end{pmatrix}}{\begin{pmatrix}1\\0\\1\\1\end{pmatrix}}={\begin{pmatrix}1\\0\\1\\1\\0\\1\\0\end{pmatrix}}=\mathbf {r} }
  

May thu se nhan 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 voi r, đe kiem tra xem co loi xay ra hay khong. Thi hanh tinh nhan nay, may thu đuoc (mot lan nua, cac gia tri đong du mođulo 2):

  
    
      
        
          H
          
            d
          
        
        
          r
        
        =
        
          
            (
            
              
                
                  0
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  0
                
                
                  1
                
                
                  1
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
              
            
            )
          
        
        
          
            (
            
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  0
                
              
            
            )
          
        
        =
        
          
            (
            
              
                
                  0
                
              
              
                
                  0
                
              
              
                
                  0
                
              
            
            )
          
        
      
    
    {\displaystyle H_{d}\mathbf {r} ={\begin{pmatrix}0&0&0&1&1&1&1\\0&1&1&0&0&1&1\\1&0&1&0&1&0&1\\\end{pmatrix}}{\begin{pmatrix}1\\0\\1\\1\\0\\1\\0\end{pmatrix}}={\begin{pmatrix}0\\0\\0\end{pmatrix}}}
  

Vi chung ta đuoc mot vecto toan so khong cho nen may thu co the ket luan la khong co loi xay ra
So di mot vecto toan so khong co nghia la khong co loi, boi vi khi 
  
    
      
        
          H
          
            e
          
        
      
    
    {\displaystyle H_{e}}
  
 đuoc nhan voi vecto du lieu, mot su thay đoi trong nen tang xay ra đoi voi khong gian ben trong vecto (vector subspace), tuc la hach cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
. Neu khong co van đe gi xay ra trong khi truyen thong, r se nam nguyen trong hach cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 va phep nhan se cho ket qua mot vecto toan so khong.
Trong mot truong hop khac, neu chung ta gia su la loi mot bit đa xay ra. Trong toan hoc, chung ta co the viet:

  
    
      
        
          r
        
        +
        
          
            e
          
          
            i
          
        
      
    
    {\displaystyle \mathbf {r} +\mathbf {e} _{i}}
  

mođulo 2, trong đo ei la vecto đon vi đung thu i (ith unit vector), co nghia la, mot vecto so 0 co mot gia tri mot trong vi tri i (tinh tu 1 tinh đi). Bieu thuc tren noi cho chung ta biet rang co mot bit bi loi tai vi tri i.
Neu bay gio chung ta nhan 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 voi ca hai vecto nay:

  
    
      
        
          H
          
            d
          
        
        (
        
          r
        
        +
        
          
            e
          
          
            i
          
        
        )
        =
        
          H
          
            d
          
        
        
          r
        
        +
        
          H
          
            d
          
        
        
          
            e
          
          
            i
          
        
      
    
    {\displaystyle H_{d}(\mathbf {r} +\mathbf {e} _{i})=H_{d}\mathbf {r} +H_{d}\mathbf {e} _{i}}
  

Vi r la du lieu thu nhan đuoc khong co loi, cho nen tich cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 va r bang 0. Do đo

  
    
      
        
          H
          
            d
          
        
        
          r
        
        +
        
          H
          
            d
          
        
        
          
            e
          
          
            i
          
        
        =
        
          0
        
        +
        
          H
          
            d
          
        
        
          
            e
          
          
            i
          
        
        =
        
          H
          
            d
          
        
        
          
            e
          
          
            i
          
        
      
    
    {\displaystyle H_{d}\mathbf {r} +H_{d}\mathbf {e} _{i}=\mathbf {0} +H_{d}\mathbf {e} _{i}=H_{d}\mathbf {e} _{i}}
  

Vay, tich cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
  voi vecto nen chuan tai cot thu i (the ith standard basis vector) lam lo ra cot o trong 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
, vi the ma chung ta biet rang loi đa xay ra tai vi tri cot nay trong 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
. Vi chung ta đa kien tao 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 duoi mot hinh thuc nhat đinh, cho nen chung ta co the hieu gia tri cua cot nay nhu mot so nhi phan - vi du, (1,0,1) la mot cot trong 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
, tuong đong gia tri voi cot thu 5, do đo chung ta biet loi xay ra o đau va co the sua đuoc no.
Lay vi du, gia su chung ta co:

  
    
      
        
          s
        
        =
        
          r
        
        +
        
          
            e
          
          
            2
          
        
        =
        
          
            (
            
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  0
                
              
            
            )
          
        
      
    
    {\displaystyle \mathbf {s} =\mathbf {r} +\mathbf {e} _{2}={\begin{pmatrix}1\\1\\1\\1\\0\\1\\0\end{pmatrix}}}
  

Neu thi hanh phep nhan:

  
    
      
        
          H
          
            d
          
        
        
          s
        
        =
        
          
            (
            
              
                
                  0
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
                
                  1
                
                
                  1
                
              
              
                
                  0
                
                
                  1
                
                
                  1
                
                
                  0
                
                
                  0
                
                
                  1
                
                
                  1
                
              
              
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
                
                  0
                
                
                  1
                
              
            
            )
          
        
        
          
            (
            
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  1
                
              
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  0
                
              
            
            )
          
        
        =
        
          
            (
            
              
                
                  0
                
              
              
                
                  1
                
              
              
                
                  0
                
              
            
            )
          
        
      
    
    {\displaystyle H_{d}\mathbf {s} ={\begin{pmatrix}0&0&0&1&1&1&1\\0&1&1&0&0&1&1\\1&0&1&0&1&0&1\\\end{pmatrix}}{\begin{pmatrix}1\\1\\1\\1\\0\\1\\0\end{pmatrix}}={\begin{pmatrix}0\\1\\0\end{pmatrix}}}
  

Tich cua phep nhan cho chung ta mot ket qua tuong đuong voi cot thu 2 ("010" tuong đuong voi gia tri 2 trong so thap phan), va do đo, chung ta biet rang loi đa xay ra o vi tri thu 2 trong hang du lieu, va vi vay co the sua đuoc loi.
Chung ta co the de dang thay rang, viec sua loi do 1 bit bi đao lon gay ra, dung phuong phap tren la mot viec thuc hien đuoc. Ben canh đo, ma Hamming con co the phat hien loi do 1 bit hoac 2 bit bi đao lon gay ra, dung tich cua 
  
    
      
        
          H
          
            d
          
        
      
    
    {\displaystyle H_{d}}
  
 khi tich nay khong cho mot vecto so khong. Tuy the, song ma Hamming khong the hoan thanh ca hai viec.


Ma Hamming va bit chan le bo sung Neu chung ta bo sung them mot bit vao ma Hamming, thi ma nay co the dung đe phat hien nhung loi gay ra do 2 bit bi loi, va đong thoi no khong can tro viec sua cac loi do mot bit gay ra. [1] Neu khong bo sung mot bit vao them, thi ma nay co the phat hien cac loi do mot bit, hai bit, ba bit gay ra, song no se can tro viec sua cac loi do mot bit bi đao lon. Bit bo sung la bit đuoc ap dung cho tat ca cac bit sau khi tat ca cac bit kiem cua ma Hamming đa đuoc them vao.
Khi su dung tinh sua loi cua ma, neu loi o mot bit chan le bi phat hien va ma Hamming bao hieu la co loi xay ra thi chung ta co the sua loi nay, song neu chung ta khong phat hien đuoc loi trong bit chan le, nhung ma Hamming bao hieu la co loi xay ra, thi chung ta co the cho rang loi nay la do 2 bit bi đoi cung mot luc. Tuy chung ta phat hien đuoc no, nhung khong the sua loi đuoc.


Ghi chu Xem them Khoang cach Hamming (Hamming distance)
Ma Golay (Golay code)
Ma Reed-Muller (Reed-Muller code)
Ma Reed-Solomon (Reed-Solomon code)
Ma Turbo (Turbo code)


Lien ket ngoai PHP page that emulates Hamming Code calculation (from L. Lange, Luxembourg)
CGI script for calculating Hamming distances (from R. Tervo, UNB, Canada)