由於同位位元檢查和循環冗餘碼(CRC)均無法提供足夠的資訊來更正錯誤,所以就有人提出ECC的概念,它不僅能夠偵測錯誤,還可以更正錯誤。
漢明碼(Hamming Code),是在電信領域的一種線性偵錯碼,以發明者Richard Hamming的名字命名。漢明碼在傳輸的訊息流中插入驗證碼,以偵測並更正單一位元錯誤。由於簡單的漢明編碼,它們被廣泛應用於內存(RAM)。
0 1 0 1 1 1 偶
1 0 1 0 1 0 奇
1 0 1 1 0 1 偶
0 1 0 0 1 0 偶
0 1 0 0 1 0
偶奇偶偶 偶 偶
如果一條訊息中包含更多用於糾錯的位,且透過妥善安排這些糾錯位使得不同的出錯位產生不同的錯誤結果,那麼我們就可以找出出錯位了。在一個7位的訊息中,單個位出錯有7種可能,因此3個錯誤控制位就足以確定是否出錯及哪一位出錯了。
漢名研究了包括五取二碼在內的編碼方案,並歸納了他們的想法。
資料位位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | ... | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
編碼後資料位置 | p1 | p2 | d1 | p4 | d2 | d3 | d4 | p8 | d5 | d6 | d7 | d8 | d9 | d10 | d11 | p16 | d12 | d13 | d14 | d15 | ||
奇偶校驗位 覆蓋率 | p1 | X | X | X | X | X | X | X | X | X | X | |||||||||||
p2 | X | X | X | X | X | X | X | X | X | X | ||||||||||||
p4 | X | X | X | X | X | X | X | X | X | |||||||||||||
p8 | X | X | X | X | X | X | X | X | ||||||||||||||
p16 | X | X | X | X | X |
沒有留言:
張貼留言