嵌入式系统设计师学习笔记⑨:校验码

嵌入式系统设计师学习笔记⑨:校验码

码距的定义
一个编码系统的码距就是整个编码系统中任意(所有)两个码字(合法编码)的最小距离。
例如:要对A,B两个字母进行编码

若用1位长度的二进制编码,若A=1,B=0。这样A,B之间的最小码距为1。(因为只有1位不同)
若用2位长度的二进制编码,若A=11,B=00。这样A,B之间的最小码距为2。(因为有2位不同)

若A=11,B=01,则A,B之间的码距为1。(因为只有一位不同)
用竖式分析: A = 1 1
           B =  0 1 
           对应位只有最高位不同(1位不同) 所以是1位码距
若A=100,B=011,则AA,B之间的码距为3。(因为有3位不同)
用竖式分析: A = 1 0 0
           B =  0 1 1
           对应位各不相同  所以是3位码距

码距存在的意义是为了检错和纠错。

若甲乙通信,采用A=1,B=0的编码方式
甲发送给乙:AB→1,0,由于出错,编码变成了1,1或者0,0,此时乙方收到的信息就可能是AA或BB。
由于是1位码制,1,0在此系统中均合法,所以乙不知道系统出错,仍接收。
(无法检错和纠错)

若甲乙通信,采用A=11,B=00的编码方式
甲发送给乙:AB→11,00,由于出错,编码变成了10,01。
由于是2位码制,10,01编码在此系统中均非法,所以乙知道系统出错了,但是乙不知道是A的编码出错还是B的编码出错,因为对于10来说A的第二位出错可以变成10,B的第一位出错也可以变成10。
(码距为2时,能够检1位错误,但是无法纠错即不知道是哪位出错)

若甲乙通信,采用A=111,B=000的编码方式
甲发送给乙:AB→111,000,由于出错,编码可能变成了110,101,100,001,010,011。
由于是3位码制,110,101,100,001,010,011编码在此系统中均非法,所以乙知道系统出错了会丢弃该数据包,由于出错2位的概率较小,因此110,101,011码制都可被纠正为111码,100,001,010码制都可被纠正为000码。
(码距为3时,能够检1位错误,同时可以纠错1位)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

奇偶校验码
通过在编码中增加一位校验码来使编码中的1的个数增加为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2

仅可检错,可检测1(奇数)位错

CRC(循环冗余校验码)
利用生成多项式为K个数据位产生r个校验位来进行编码其编码长度为:k + r
在这里插入图片描述

仅可检错,可检测多位错误
用到了模2运算法

海明码(汉明码)
①在数据位之间插入K个校验位,通过扩大码距来实现检查和纠错
②设数据位是n位,校验码是k位,则n和k必须满足以下关系:

2^k -1 >= n +k 

可检错,且可纠1位错

全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务