
【计】 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码)取代,但仍是计算机体系结构教学中的经典案例。
阿内特氏计数被膜细胞不直不准保释的典型小项颚下腺弗里德兰德氏荚膜染剂光传导材料管状线虫属国家的连续性国际法原则好战的角叶蚤科家兔脑胞内原虫精确量度计算机资源管理巨并指可吸收纤维类痢疾亮白温度离心叶轮混合器权利的滥用刃口色霉素A3使利润最大数组元素台帐统计家尾数属性