海明校验码
原理:
实际上就是在一个n个二进制数据序列的信息码位之外加上k个二进制数据序列的检验码位,从而形成一个n+k位的二进制数据序列的码字。校验位的位置,位于整个完成编码的2^n的位置。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。
公式说明:
n为信息位的个数;K为校验位的个数
2^K >= n + k + 1
例:
原编码:1011
(1).根据2^K >= n + k + 1公式,n=4,则校验位k最小位数为3。2^0 = 1,2^1 = 2,2^2 = 4
(2).将数据加入表格,如表所示
(3).列出校验位公式,如下
信息位拆分:
7位=2^2 + 2^1 + 2^0;6位=2^2 + 2^1;5位=2^2 + 2^0;3位=2^1 + 2^0
I4 =1 ; I3 =0 ; I2 =1 ; I1 =1
校验位拆分:
4位=2^2;2位=2^1;1位=2^0
校验码:
R2(4位) = I4⊕I3⊕I2 = 1⊕0⊕1 = 0
R1(2位) = I4⊕I3⊕I1 = 1⊕0⊕1 = 0
R0(1位) = I4⊕I2⊕I1 = 1⊕1⊕1 = 1
(4).发送的的新编码为1010101
例:
接收的新编码为1011101,而发送的校验码为R2=0;R1=0;R0=1
接收的数据加入表格,如表所示
接收R2⊕I4⊕I3⊕I2 = 接收R2⊕发送R2 = 1 ⊕ 0 = 1
接收R1⊕I4⊕I3⊕I1 = 接收R1⊕发送R1 = 0 ⊕ 0 = 0
接收R0⊕I4⊕I2⊕I1 = 接收R0⊕发送R0 = 1 ⊕ 1 = 0
结果为100,即2^2 = 4位,即第4位错误,所以当前第4位的1,应变为0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具