
【計】 Hamming check
a great number of; brine; extra large; fishpond; sea
【法】 mare; ocean; sea
bright; clear; clear-sighted; honest; immediately following in time
understand
【醫】 phanero-
【計】 verify
海明校驗(Hamming Code)是一種用于檢測和糾正數據傳輸或存儲過程中出現的單位錯誤的編碼技術,由理查德·漢明(Richard Hamming)于1950年提出。其核心原理是通過添加冗餘校驗位,使合法碼字間的最小漢明距離(Hamming Distance)不小于3,從而實現單比特錯誤的檢測與糾正。
校驗位計算
設數據位數為 (k),校驗位數為 (r),需滿足 (2^r geq k + r + 1)。校驗位放置在碼字中序號為 (2^i)((i=0,1,2,ldots))的位置,其值由覆蓋位通過異或運算(XOR)确定。
例如,校驗位 (P_1) 覆蓋所有二進制序號末位為1的位(如1、3、5、7等),其值為:
$$
P_1 = D_1 oplus D_2 oplus D_4 oplus cdots
$$
錯誤定位與糾正
接收方重新計算校驗位,與接收到的校驗位比較生成校正子(Syndrome)。校正子的二進制值直接對應錯誤位置。例如:
經典文獻
Hamming, R. W. (1950). Error Detecting and Error Correcting Codes. Bell System Technical Journal, 29(2), 147–160.
DOI鍊接(需通過學術數據庫訪問)
國際标準
IEEE 802.3 Ethernet協議中部分糾錯機制基于海明碼原理(IEEE Std 802.3-2018, Section 4)。
技術手冊
Intel® Server Memory Specifications:說明ECC内存如何利用海明碼變種實現錯誤糾正。
教材與百科
Patterson, D. A., & Hennessy, J. L. (2017). Computer Organization and Design: The Hardware/Software Interface (5th ed.). Morgan Kaufmann. (第5章詳解海明碼實現)
對于4位數據 ( D = [d_3, d_2, d_1, d_0] ) 的海明碼(7,4)編碼,校驗位計算為:
$$
begin{aligned}
P_1 &= d_0 oplus d_1 oplus d_3
P_2 &= d_0 oplus d_2 oplus d_3
P_3 &= d_1 oplus d_2 oplus d_3
end{aligned}
$$
完整碼字:( [P_1, P_2, d_0, P_3, d_1, d_2, d_3] )。
以下基于通用知識對“海明校驗”進行解釋:
海明校驗(Hamming Code) 是一種由理查德·海明(Richard Hamming)于1950年提出的錯誤檢測與糾正技術,主要用于數據傳輸或存儲過程中檢測和修正單比特錯誤,同時可檢測雙比特錯誤。
校驗位插入
在數據位中插入多個校驗位(冗餘位),位置為2的幂次方(如1,2,4,8...)。例如,4位數據需要3個校驗位(總長度7位)。
奇偶校驗規則
每個校驗位負責覆蓋特定數據位,通過奇偶校驗(1的個數為奇數或偶數)生成校驗值。例如:
錯誤定位與糾正
接收方重新計算校驗位,與接收到的校驗位異或,得到錯誤位置編號。例如,若異或結果為二進制101
(十進制5),則第5位出錯。
對于數據位 $d_3d_2d_1d_0$,校驗位 $p_2p_1p_0$ 的計算為: $$ begin{aligned} p_0 &= d_0 oplus d_1 oplus d_3 p_1 &= d_0 oplus d_2 oplus d_3 p_2 &= d_1 oplus d_2 oplus d_3 end{aligned} $$
主要用于内存(如ECC RAM)、早期通信協議和存儲設備,現部分場景被更複雜的算法(如Reed-Solomon碼)取代,但仍是計算機體系結構教學中的經典案例。
【别人正在浏覽】