海明码——例题详解
????????海明碼是一種利用奇偶性來檢錯和糾錯的校驗方法。海明碼的構成方法是在數據位之間特定的位置上插入k個校驗位,通過擴大碼距來實現檢錯和糾錯。所以要得到海明碼需要1.數據位 2.校驗位?3.合并數據位和校驗位。
海明碼的求解步驟:
下面通過例題:求信息1011的海明碼。? 來具體的實現海明碼的求解步驟。
1.根據數據位位數確定校驗位有幾位。
海明碼的數據位(n)和校驗位(k)的公式是n+k<=-1? (k=0,1,2......)可以采取帶值法試出滿足條件的最小的k值就是校驗位的位數。
根據數據位有4位,n=4,根據公式n+k<=-1,算出滿足公式最小的k值為3即校驗位的位數為3位,所以海明碼的長度是數據位+校驗位=7位。
2.確定校驗位的位置。
校驗位的位置在2的n(n=0,1,2....)次方中,即處于第1,2,4,8,16......位上,其余位為數據位。本題海明碼長度為7為,所以校驗位處于第1,2,4位上。
如下圖,用表示數據1011,表示校驗位。
?3.求出校驗位。
?校驗位:被校驗的所有數據位異或。
1.分別列出每個數據位需要的校驗位,如下圖。
數據位對應位數為7,7=++,即數據位由校驗位2,1,0共同校驗(看2的次方數)。
數據位對應位數為6,6=+,即數據位由校驗位2,1共同校驗。
?數據位對應位數為5,5=+,即數據位由校驗位2,0共同校驗。??
數據位對應位數為3,3=+,即數據位由校驗位1,0共同校驗。
2.每個校驗位需要校驗的數據位(根據上圖推導)
校驗位2需要校驗數據位;
?校驗位1需要校驗數據位;
?校驗位0需要校驗數據位;
3.求出各個校驗位的值
為校驗位需要校驗的數據位的數值進行異或如下圖。
?4.合并數據位和校驗位得到海明碼。
5.檢測和糾錯原理
將每一位校驗碼與其校驗的位數分別異或,如下圖。如果是偶校驗,運算結果全為0,如果是奇校驗,運算結果全為1。
?eg:此時收到的數據為1010001(第3位出錯),運算結果如下圖
?算出結果按照??排列為二進制011這里指出的就是錯的位數,轉化為十進制為3即第三位出錯,糾錯方法就是將該位取反。
?
總結
- 上一篇: CSS3白色质感3D按钮特效源码
- 下一篇: 鸿蒙Harmony谈了这么久,和Andr