zoukankan      html  css  js  c++  java
  • 数据校验码概述

    奇偶校验码

    最简单实用的一种校验数据的方式。在原始数据的后面加一个校验位来实现数据的校对。

    若原始数据为:(D=(D_1,D_2...D_n)​)

    偶校验:$D_偶 = D_1 igoplus D_2 igoplus...D_n $

    奇校验:(D_奇 = overline{ D_1 igoplus D_2 igoplus...D_n })

    验算时:

    (F = overline{D_1 igoplus D_2 igoplus...D_n igoplus D_奇})

    (F = D_1 igoplus D_2 igoplus...D_n igoplus D_偶)

    如果 (F) 的值为 0 ,则传输正确,否则错误

    奇偶校验码只能检查一位错,并且无法纠错

    海明检验码

    若一共有 k 个数据位,则需要 r个检验位来完成一位纠错,两位检错。

    $ 2^{r-1} geq k + r$

    新生成的数据为 k+r位,其中每个校验位放在2的幂次方的位置上

    其值为原始数据位在新的排列后,其位次的二进制中有对应位的数的异或和

    最后一个校验位的值是前面所有位的异或和,其作用是判断是一位错还是两位错

    当接收方接收数据后。先看最后一位,若是1则代表一位错。具体位置由各个位置的海明码组成的二进制表示。

    若是0,则若是其他位校验码都是0表示传输正确,否则就是两位错。

    CRC循环校验码

    前置技能:模2除法

    传输前双方约定好一个二进制串,设长度为r,要求最高位和最低位的值必须为1

    先将原始数据右移r-1位,低位补0。

    然后将这个数除之前的二进制串,得到的余数和之前处理好的数据相加。得到校验码。

    PS.这个余数一定是要r-1位的,若不够则高位补0

  • 相关阅读:
    Django Form组件的扩展
    Python TCP与UDP的区别
    Python三次握手和四次挥手
    网络基础之网络协议
    Python 类方法、实例方法、静态方法的使用与及实例
    python深浅拷贝
    2021牛客寒假算法基础集训营1 题解
    01 Trie 专题
    MOTS:多目标跟踪和分割论文翻译
    牛客巅峰赛S2第6场题解
  • 原文地址:https://www.cnblogs.com/SCaryon/p/9240702.html
Copyright © 2011-2022 走看看