漢明碼編碼的錯誤修正原理
出自:http://user.qzone.qq.com/48052347/blog/1297330476
參考:漢明碼校正原理解析 甘家寶 1. 簡介:
當電腦儲存或移動資料時,可能會產生資料位元錯誤,這時可以利用漢明碼來檢測並錯誤修正,簡單的說,漢明碼是一個錯誤校正碼碼集,由Bell實驗室的R.W.Hamming發明,因此定名為漢明碼。
2. 漢明碼的定義和漢明碼不等式:
設:m=資料位元數,k=校正位元為,n=總編碼位元=m+k,有Hamming不等式:
- 1. 漢明碼不等式含義:
a) 總資料長度為N,如果每一位元據是否錯誤都要記錄,就需要N位來儲存。
b) 每個校正位都可以表示:對或錯;校正位共K位,共可表示2^k 種狀態 c) 總編碼長度為N,所以包含某一位錯和全對共N+1種狀態。
d) 所以2^k≧N+1
e) 資料表見下
2. Hamming碼缺點:
無法實現2位或2位以上的錯誤修正,Hamming碼只能實現一位錯誤修正。
3. 以典型的4位元據編碼為例,示範漢明碼的工作過程
a) 資料存放區格式:
依照此前的漢明碼不等式計算出,當資料位元為4位時,漢明碼校正位至少為3位,如上方式排列
可以看的出D8、D4、D2、D1中的數字都是2的整數冪
b) 漢明校正碼的插入規律:
l 設:編碼位代號k,校正碼位代號p,資料位元代號n
l 某個校正碼Pp將處於整個編碼的第k位
l k=2^(p-1)=2的(p-1)次方
l 以資料位元為5的一組9位元編碼為例,如下:
c) 校正位與資料位元的對應關係:
註:^是邏輯運算子異或.
P1=D8^D4^D1
P2=D8^D2^D1
P3=D4^D2^D1
小解釋:資料位元共4位每行等式都缺少一位,而缺少的這位元據位正好是DX,等式左邊的校正位為PY,X=2^y(2的y次方)
d) 校正位如何參與計算:
P1’=P1^D8^D4^D1
P2’=P2^D8^D2^D1
P3’=P3^D4^D2^D1
從高到低排列的位元:P3’ P2’ P1’表示的就是出錯的編碼位,從000-011-101-110-111共5種組合,其中000表示沒錯,011表示第三位錯誤,101,110,111分別表示第5,6,7位錯誤。可表示原資料位元D8D4D2D1某一位錯&沒錯的一共5種狀態.
e) 設有一數字為:1101,帶入運算:
l D8=1、D4=1、D2=0、D1=1,
l P1 =1,P2=0、P3=0。
l 漢明碼處理的結果就是1010101
l 假設:D8出錯,P3’ P2’ P1’=011=十進位的3,即表示編碼後第三位出錯,對照儲存格式表,果然就是D8錯誤.
l 假設:D4錯誤,P3’ P2’ P1’=101=十進位的5,即表示編碼後第五位出錯,對照儲存格式表,果然就是D4錯誤.
|