奇偶效验、CRC循环冗余效验、海明码校验

奇偶校验

奇偶校验(Parity Check)是一种在数据传输过程中用来检测传输出错的校验方法之一。其基本原理是在每一个数据块的末尾添加一个校验位,使得所有数据块中“1”的个数(或“0”的个数)为奇数(或偶数)。在数据接收端,再次对接收到的数据计算奇偶值,并将计算结果与发送端传输的奇偶位进行比对,如果接收到的奇偶值与发送端传输的奇偶位不同,说明传输过程中发生了错误。

下面举个简单的例子:

假设我们要传输一个8位的二进制数字10101110,
其中1表示高电平(或逻辑真),0表示低电平(或逻辑假)。
为了增加数据传输的可靠性,我们需要通过奇偶校验来检测传输出错的情况。
这时,我们可以在该数字的末尾添加一个校验位,使得整个数据块中包含的“1”的个数为偶数或奇数。
这里我们选择奇数作为校验方式,因此添加的校验位应该是一个“1”,这样整个数据块中包含的“1”的个数就变成了5个,也就是奇数。

因此,经过奇偶校验处理后,该数字变成了101011101,其中末尾的“1”就是添加的校验位。在数据接收端,我们读取传输过来的8位数字以及末尾的奇偶校验位,然后计算这9个二进制数字中包含的“1”的个数是否为奇数,如果是,则说明传输正常,否则说明传输出错。

需要注意的是,奇偶校验并不能检测到所有的传输错误,例如如果在传输过程中多个二进制数字位同时发生了错误,则可能无法被检测出来。因此,在实际应用中,还需要结合其他校验方法(如CRC校验)来提高传输可靠性。


循环冗余校验(Cyclic Redundancy Check,CRC)

是一种常用的数据传输错误检测技术,它通过对数据位进行计算和附加校验码来判断数据是否出错。该方法通过对原始数据位串进行二进制多项式除法运算,生成固定长度的校验码,并将其附加到数据序列末尾一起传输。在接受端,再次进行相同的多项式除法运算和校验码计算,如果计算结果与附加的校验码匹配,则说明数据没有发生错误。

下面举个简单的例子,来说明CRC是如何工作的:

假设我们要传输一个8位的二进制数字10101110,其中1表示高电平(或逻辑真),0表示低电平(或逻辑假)。我们需要通过CRC来较准确的检测传输过程中的数据出错情况。这里使用简单的比特流模式实现CRC校验:

1.首先,需要选择一个多项式作为校验码生成器(Generator),通常在数据通信应用中采用的多项式如CRC16、CRC32等。例如,这里我们选择一个简单的4位二进制多项式:x³ + x + 1,转化为二进制表示为:0b10011。

2.然后,在原始数据位串的末尾添加比生成多项式所需的比特位数(这里是4个),并设置为比特位值全为0。这时,发送数据变成了:101011100000。

3.接下来,将生成多项式除以原始数据位串加上4个填充比特位所组成的二进制数。这里我们使用异或运算(XOR)实现除法,即在每一步中将除数和余数进行异或运算,直到最后得到余数。具体的计算步骤如下:

第一步,将生成多项式左移到最高位对准数据位串的最高位,此时异或的结果为:1010101101。
第二步,将异或的结果右移一位,再次与生成多项式进行异或运算,此时的结果为:111111010。
第三步,继续执行第二步操作,此时的结果为:111100110。
最后,将生成的余数附加在原数据位串的末尾,发送的数据就变成了:101011101100。
4.在接收端,采用与发送端相同的生成多项式进行校验码计算。如果接收到的数据没有发生错误,则计算得到的余数应该为0。否则,说明接收到的数据发生了错误。

需要注意的是,CRC校验虽然可以有效地检测大多数的通信错误,但并不能保证绝对的准确性。因此,在实际应用中,还需要结合其他校验方法(如奇偶校验)来提高传输可靠性


海明码

海明码(Hamming Code)是一种基于二进制纠错编码技术的错误检测和纠正方法。它能够检测单个比特中的差错,并且能够在校验位的帮助下对1位引起的错误进行纠正。海明码编码时通过对原数据进行特殊的位操作生成冗余信息(即校验位),并在传输过程中用这些信息进行错误检测和纠正。

下面我们举个例子,来说明海明码是如何工作的:

假设我们要传输一个4位二进制数字1001,其中1表示高电平(或逻辑真),0表示低电平(或逻辑假)。首先,我们需要确定奇偶校验位的数量,以及使用哪些比特位来表示这些校验位。在海明码中,奇偶校验位的数量等于原始数据位串中R的值,公式为:2^R >= K+R+1,其中K为原始数据位串中的比特数,R为校验位的数量。在本例中,K=4,因此我们选择3个校验位。然后,我们需要将这些校验位插入到原始数据位串的某些位置,具体规则如下:

1.确定每个校验位对应的位置:对于位置编号p(从1开始),如果p是2的幂次方,则该位置是一个校验位,否则是一个数据位。

2.计算每个校验位的值:对于编号为2i的位置,第i个校验位的值是由第p个位置到第p+2i-1个位置的比特位异或操作得到的。

例如,在本例中,我们选择以下4个位置:

位1:D1(数据位)
位2:P1(奇偶校验位)
位3:D2(数据位)
位4:P2(奇偶校验位)
位5:D3(数据位)
位6:D4(数据位)
位7:P3(奇偶校验位)
按照上述规则计算每个校验位的值,我们可以得到海明码为:0111001。注意,最后一个校验位的值和前两个不同,因为它覆盖了所有偶数位置的比特位。

在传输过程中如果发送过程中某一位变成了0,则接收端收到的数据可能是:0101001。这时,我们需要对接收到的数据进行校验和纠错。首先,计算每个校验位的值,并与接收到的数据进行比较。如果校验位的值与接收到的数据不相等,则说明该校验位存在差错。然后,通过差错位所代表的位置确定受影响的比特位,并将其取反。例如,在本例中我们可以通过校验位P3的值不匹配,确定第7个比特位是错误的,并将其由1改为0,得到正确的原始数据位串1001。

综上所述,海明码通过构建冗余信息实现了单错位纠错和多错位检测的功能,具有比奇偶校验更强的纠错能力。但在实际应用中,海明码的计算复杂度较高,且需要传输更多的比特位,因此并不是所有场景都适合使用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容