32位crc校验码程序_组成中三个校验码计算和校验

b6e71dcd6cd3ab38354909f7f8008218.png

奇偶校验

这个校验主要的应用场景是ASCII码的校验,因为ASCII一共有 128个,所以只需要7位足够了,但是计算机基本按照字节存储,所以自然而然多出来一位,也就是8位。那么左边的那个bit位就可以用来做奇偶校验位置了。

核心思想:对信息位中的1进行异或运算,然后根据这个异或结果和奇偶校验的方法决定校验位的值。

公式:

举个例子:

对于奇偶校验来说,只能检测出来奇数位出错的情况,也就是出错的位的个数可能为1,3,5,7……

汉明码

汉明码的计算流程如下:

  1. 利用公式:
    计算需要的校验位数
  2. 确定校验位分布,汉明校验位的分部服从:
  3. 分组形成校验关系
  4. 校验位取值并计算最后的结果

所有计算机组成的书上这个计算过程根本就写不明白,这里我推荐利用表格计算,以1010为例:

  1. 利用公式计算位数
    解得k为3
  2. 计算分布(
  3. 分组形成校验关系

这里直接用表格计算就行了

这里的

就是汉明校验位置了,那么怎么计算的呢?

这里需要根据表格中可以看出来,对于信息位来说,可以总结出来这样一个公式

这样的一个公式可以好好理解一下,对照上面的计算方法,可以很清楚了明白计算了。

关于校验

校验计算完成以后根据

的值检查是否有问题,如果全为0则没有问题,如果不为0,则转换为10进制,所代表的就是这个十进制数代表的位置出现了错误,纠错很简单直接进行位反转就行了,0转1,1转0

CRC

这个里面的核心算法是一个叫做模2除法的东西,这个东西应该是CRC中的核心部分了。

模2除法:

计算过程就是最高位够用就按照四则混合运算的除法在商位置写1,然后余数使用异或计算。

CRC的算法流程如下

  1. 根据多项式最高次项的系数进行移位,例如对于多项式
    移位补0后:
  2. 进行模2除法 被除数为信息码移位后结果 101001000 除数为
    二进制展开1101
  3. 得到的余数就是CRC校验码,把这个CRC校验码写到后面就可以了,结果为101001001

校验过程是一个逆过程,对一个含有CRC的信息串通过模2除,计算余数,如果不全为0,则十进制数代表的位置的信息出现了错误,反转就可以了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值