汉明码

汉明码

简介

“汉明码”是一种“错误纠正码”,可以用来检测并且纠正数据从发送端发往接收端中发生的错误。
能发现和能纠正一bit的错误,1bit以上可能无法发现或者纠正错误。
汉明码可以说是奇偶校验码的升级版,原理是基于奇偶校验码。
奇偶校验码
简单的一种,给每一个码字加一个校验位,若两数中有奇数位不同,则校验码就不同。
只能发现奇或偶数位的错误,不能纠错。
如ASCII码:第一位为校验位,奇校验,只有奇数个1则合法

原理

将原码以原码所在汉明码中位数的二进制数的某个位为1来分组。
对所有组进行奇偶校验,校验码放在组的第一位。
如果传输途中1bit出错,把所有组校验结果错误的标记为1,正确的标记为0,由于每组都对应一个汉明码位置的一个位,所以可以根据此来找到错误的位置,对其取反。
如:
数据:10101

汉明码位号十进制表示123456789
汉明码位号二进制表示000100100011010001010110011110001001
数据/校验码校验码校验码数据校验码数据数据数据校验码数据
汉明码001101011

汉明码位号二进制中符合2^i都是一个校验码也是一个组的校验码。
汉明码位号二进制表示中有多少个位就分多少个组,这里有4个位。
分组规则:哪位为’1‘就是哪组元素。
1号位为‘1’的都是第一组元素:
1->0001,3->0011,5->0101,7->0111,9->1001
2号位为’1‘的都是第一组元素
2->0010,3->0011,6->0110,7->0111

技巧

汉明码位数判断:
2^校验码 > 原码 + 校验码

校验码位置:2^i 。

校验码要使组中所有元素数据位1的个数为偶数

快速分组
[组号~2^组号-1]为一块
2^组号为到下一块的距离(类似等差数列)

汉明码中位置组号元素位置
111.3.5.7.9.11.13
222,3.6,7.10,11.
434,5,6,7.12,13,14,15.
848,9,10,11,12,13,14,15.

快速计算
将原码中数据为一的位二进制表示,竖着排列

十进制二进制
30011
60110
91001
校验码1100

第位的校验码对应低的组号。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值