海明码与crc码学习笔记


海明码:

利用海明码检测并纠错,通过数据位后面增加几位比特验证数据有效性,指出数据出错时错误位置。

方法:

设信息位是K,冗余位是R,,构成K+R位码字,关系式有:2^r(2的r次方)>=k+r+1。
当k=7时,若要用海明码计算,则需要满足上式,r=4,,16>=7+4+1。。同理,知道冗余位,可以求得信息位。
当k=4时,即2^r=4+r+1,得r=3,需要三个冗余位,构成a6,a5,a4,a3,a2,a1,a0;在校验分别和时,a2,a1,a0分别和这些位构成不同的监督模式,若传输后没有错误,则三个监督模式的值与s2,s1,s0应该全为0,若传输有错,则其中某一位的差错可以和s2,s1,s0的对应关系:

对应关系
s2s1s0000001010100011101110111
出错码无措a0a1a2a3a4a5a6

当s2出错时:对应的有a2,,a4,a5,a6。s2=1,监督关系即:s2=a2+a4+a5+a6     注:+ 表示异或(后文一样)

当s1出错时:对应的有a1,,a3,a5,a6。。如上    s1=a1+a3+a5+a6

当s0出错时:对应的有a0,a3,a4,a6。。。如上  s0=a0+a3+a4+a6

当没有出错时:s2=0,s1=0,s0=0。。

有上得    a2=a4+a5+a6     a1=a3+a5+a6     a0=a3+a4+a6

知道信息位,,就可得冗余位,得到没海明码。
举例:
1.
信息码为:1010,根据2^r>=k+r+1得冗余位是3,a2=a4+a5+a6=0,,a1=a3+a5+a6=1,,a0=a3+a4+a6=0
因此海明码为:1010010.              
2.
已知接受码为:0011101,,求发送端信息码。
冗余码是:101,,s2=a2+a4+a5+a6=0,s1=1,,s0=1;;即011,。通过上表对应关系查的a3处出错,所以信息码是:0010101。

crc循环冗余校验码:

crc是一种常用的检错码,在信息位的后面加一串冗余比特实现,将要发送的二进制比特当做当做多项式的系数,在发送前用预约的G(x)生成多项式对应的比特序列去除,在F(x)后面加0,求得余数多项式,这个多项式就是循环冗余校验码,然后把他附加到信息位,发送出去,在接收端同样用G(x)去除收到的比特序列,若能被整除,表示传输正确,否则,有错重传。

例子:

信息位:1011001,,可得F(x)=x^6+x^4+x^3+1..(其中,x^6表示x 的6次方)。。约定G(x)=x^4+x^3+1.。生成的比特序列为11001

然后用1011001除以11001可以得到1010,,冗余校验码为1010,,发送出去即:10110011010,,接收端接受到以后,把接收到的编码除以11001,,如果能整除,,表示接受没有出错,,反之,接受到的编码有错,需要重传。

注:学习视频资料来自:http://edu.51cto.com/lesson/id-7373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值