網(wǎng)絡(luò)傳輸中一個(gè)海明碼糾錯(cuò)實(shí)例
網(wǎng)絡(luò)傳輸時(shí)要通過編碼糾錯(cuò),需完成以下步驟:
第一步:海明碼需要添加幾位糾錯(cuò)碼?按公式:

這里的n代表要傳輸?shù)男畔⒍嗌傥唬琸代表要添加多少位糾錯(cuò)碼。比如,要傳輸4位二進(jìn)制編碼,那么k至少要等于3才能符合圖1的要求。
第二步:糾錯(cuò)碼應(yīng)該放在什么位置?按如下公式:

也就是說,糾錯(cuò)碼的位置按照1,2,4,8,......的順序放置。
第三步:檢測(cè)位(糾錯(cuò)碼)如何取值?
要確定每位檢測(cè)碼的取值,首先需要確定每位檢測(cè)碼負(fù)責(zé)檢測(cè)哪些位,按如下原則確定:


圖3和圖4的意思就是,比如添加的第一位檢測(cè)碼,它負(fù)責(zé)檢測(cè)第1位,第3位等等,注意,這里已經(jīng)是相對(duì)于添加了檢測(cè)位以后的信息而言。為什么這么規(guī)定,由嚴(yán)格的理論證明,這樣的規(guī)定可以檢測(cè)到每一位的差錯(cuò)。
比如,現(xiàn)在要對(duì)被傳輸?shù)男畔?101進(jìn)行校驗(yàn),那么,
第一步,確定要添加幾位校驗(yàn)碼。按照?qǐng)D1,由于n=4,可以確定k最少是3。
第二步,確定校驗(yàn)碼添加的位置

第三步,確定校驗(yàn)碼每一位的取值。
以C1為例,它負(fù)責(zé)1,3,5,7位。那么,它的取值就由這些位共同確定,確定值的規(guī)則可以是偶校驗(yàn),也可以是奇校驗(yàn)。以偶校驗(yàn)為例,就是要求

包括添加的這位檢測(cè)位在內(nèi),與它所負(fù)責(zé)檢測(cè)的其它位,它們的異或運(yùn)算的結(jié)果要等于0。按照異或運(yùn)算的規(guī)則

所以,要使得圖6的結(jié)果為0,那就必須

圖8是把

當(dāng)作一個(gè)整體看待,從而符合相同為0的異或運(yùn)算規(guī)則。
同樣可以確定

從而可以得到添加了檢測(cè)位的海明碼為

現(xiàn)在假設(shè)收到一串海明碼0100111,按上述規(guī)則進(jìn)行檢測(cè),得到結(jié)果

圖12中,由于P1的結(jié)果是0,所以符合偶校驗(yàn)規(guī)則,是正確的,從而確定了接收到的碼串中第1,3,5,7位是正確的。而P2為1,則出現(xiàn)了錯(cuò)誤,由于P1已經(jīng)確定第3,7位是正確的,從而出錯(cuò)的只可能是第2,6位。而P4也的錯(cuò)的,判斷出錯(cuò)的是第4,6位。因?yàn)镻2和P4都共同判斷第6位出錯(cuò)(只考慮一位出錯(cuò)的情況),從而確定出錯(cuò)的是第6位。
從而把收到的海明碼0100111改為0100101,去除添加的1,2,4位校驗(yàn)位,可以確定傳輸?shù)恼_信息為0101。