https://blog.csdn.net/flyyufenfei/article/details/72235748編碼
海明碼(也叫漢明碼)具備一位糾錯能力。本文以1010110這個二進制數爲例解釋海明碼的編碼和校驗方法。.net
編碼blog
肯定校驗碼的位數xtable
設數據有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中須要一種取值方式表示數據正確,剩下2x-1種取值方式表示有一位數據出錯。由於編碼後的二進制串有n+x位,所以x應該知足二進制
2x-1 ≥ n+x 方法
使不等式成立的x的最小值就是校驗碼的位數。在本例中,n=7,解得x=4。數據
肯定校驗碼的位置tab
校驗碼在二進制串中的位置爲2的整數冪。剩下的位置爲數據。如圖所示。ps
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
內容 | x1 | x2 | 1 | x3 | 0 | 1 | 0 | x4 | 1 | 1 | 0 |