汉明码的学习笔记

自己的理解 帮助自己复习用的 写的可能会有错误

汉明码(Hamming Code )

汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。——百度百科

说人话 就是 我想发送一串二进制数据 例如 10010
但我又怕发送过程中出现意外就用检测码的形式保证不会出错,出错了也可以通过检测码查出哪位出错了因为二进制只有01,错了就能改正。

发送biubiubiu

我想发 10010
首先 根据公式 2 k > = n + k + 1 2^{k}>=n+k+1 2k>=n+k+1 n位二进制位数 k位检测位数
算出k最小为4
也就是5位的二进制数据10010要插入4位检测码
但插入并不是直接放在数据最前或是最后
4位检测码是按照 2 i 2^{i} 2i
位放入二进制数据中

二进制数据序号123456789
序号用二进制表示000100100011010001010110011110001001
数据串C1C21C3001C40

根据序号的二进制进行分组
满足 XXX1 的位第一组

序号13579
数据串C11010

满足 XX1X 的为第二组

序号2367
数据串C2101

满足 X1XX 的为第三组

序号4567
数据串C3001

满足1XXX的为第四组

序号89
数据串C40

Ci为第几位检测码 可以发现每组数据串都有一位检测码 分别对其进行偶校验 就可以得出检测码了 从而得到最终的汉明码
第一组 C1为0
第二组 C2为0
第三组 C3为1
第四组 C4为0
所以最后的海明码为 001100100 然后就可以biubiubiu 发过去了

接收duangduangduang

接收一串海明码怎么查错及提取有效数据嘞
还是以上面发送的为例 001 100 100在发送过程中第6位错了变成了001 101 100
看我操作就行了
接收duangduangduang
分组进行偶校验 满足给0 不满足给1

二进制数据序号123456789
序号用二进制表示000100100011010001010110011110001001
数据串001101100

满足 XXX1 的位第一组 满足偶校验 给0

序号13579
数据串01010

满足 XX1X 的为第二组 不满足偶校验 给1

序号2367
数据串0111

满足 X1XX 的为第三组 不满足偶校验 给1

序号4567
数据串1011

满足1XXX的为第四组 满足偶校验 给0

序号89
数据串00

按照组数从大到小列出为 0110 卧槽 正好就是6的二进制表示
就是第6位错了 改过来就得了 001 100 100 ✔
有效信息的话就是 去掉第1,2,4,8位的检验码
为 10010√
呐呐呐 就结束了

奇偶检验

添加一位检测位,使得二进制数据中满足奇偶原则

配偶原则 就是检测二进制数据中‘1’的个数如果为奇数个,检测位就为‘1’使得满足二进制数据中‘1’的个数满足偶数个,如果个数为偶数,检测位则为‘0’ 这就是配偶原则也叫偶校验

配奇原则就是检测二进制数据中‘1’的个数 如果为奇数,检测位为‘0’,如果为偶数,检测位为‘1’以此满足配奇数原则,也叫奇校验

为啥子呢

会做了 我们来搞搞原理
在这里插入图片描述
一串数据 1 2 3 4 5 6 7
分为三组
第一组 1 2 3 4
第二组 2 3 5 6
第三组 3 4 6 7
7个数中其中有一个是错的
我们还可以知道三个组有哪些是全对的 那些是错的
我们就能判断出 哪个数错了 神不神奇wow
eg.
第一组错了 ,第二三组对了 看图 就能知道 1是错的
第一二错了 第三组对了 看图得知 2是错的

简单的原理就是这个原理
我也说不清
自己体会
那就这样吧
写博客号累 写一上午了
我要去打csgo了
我要继续去学习了

其他一些想说的

汉明码 默认只错一位
汉明码 顺序的话可以从右向左 也就是可以

二进制数据序号987654321
数据串C4C3C2C1

就是序号顺序和检测码顺序得保持一致
而且写汉明码和姐汉明码方向应该一致(应该是对的我验证了一下就因为我看的一个教程 方向错了 我做的作业全错 呜呜呜
不过默认从左向右 别整那些骚的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值