计算机底层:奇偶校验码

计算机底层:奇偶校验码

校验码的作用:

在数据传输或存储时,可能会因为计算机元器件或收到外界干扰,导致数据发送变换。比如:在数据传输时,由于磁场干扰,使数据发送了改变,本来要传输:001,可是传输过去的结果变成了110。

为了在数据传输或存储时,能够及时发现错误数据,因此就需要对数据进行校验。更有胜者

还能够对数据进行复原。

奇偶校验码能够发现错误数据。

奇偶校验码:

如上图:两台电脑知道且使用一种编码方式,数据是2bit,因此数据只有四种表示方法。

在两台电脑之间传输数据时,出现了位错误:0变1,1变0。原本左边发送的是01的编码,可是传输时右边收到的却是00。

用户本来想表达B可是别人收到的却是A。

此时因为(00)A和(01)B都是合法字符,因此两人在传输数据时,并不会发现这个错误。

校验码原理:

为了发现错误,就出现了校验码进行对数据的校验。

2个bit表示4个信息,那么无论数据如何变,另一方收到的数据都是合法状态的。奇偶校验码就是设置数据的非法状态,来发现错误信息。

奇偶校验码在前面加了1bit。变成了2^3=8种状态。由于这里只有4个数据。因此只需要使用4种状态就行。多出来的4中状态是冗余的。

因此只要将数据对应的四种状态设为合法状态,冗余的四种状态设为非法状态,那么计算机校验时,如果发现数据是非法状态的数据,那么计算机就会知道,这个数据在传输过程中发生了改变。

此时左边创数001的数据,位错误发生后,右边收到了000,右边电脑发现000是非法状态。因此右边计算机就发现了这一数据的错误。

校验码须知的概念:

码字:就是编码,00,01,100,001。右边有4个冗余的码字

两个码字间的距离:00和11之间的距离就是2。因为两个码字的2个位是不同的。再比如100和111之间的就离也是2。

码距:如图左边的编码方案,编码之间的最小距离是1,则码距就是1;如图右边的编码方案,编码之间的最小距离是2,则码距就是2。

发现:

奇偶校验码的原理:

奇偶校验码就是在n个bit的最前面加上一个bit。如果在整个校验码(n+1bit)中,1的个数位奇数个,那么此校验码为奇校验码;如果1的个数为偶数个,那么此校验码为偶校验码。

奇偶校验码的使用:

如果两方使用偶校验码,如上图传输1010111时,使用了偶校验码,在最前方加入了1,校验码变成了:11010111。

两方传输时,发生了改变。11010111变成了11010110。接收方发现。11010110中的1有奇数个(5),并不符合偶校验码的规定。那么就是知道这串数据在传输时发送了改变。认为这是不合法的。

奇偶校验码的局限性:

上述奇偶校验码的使用中,偶校验码只改变了1个bit。

如果改变两个bit:从11010111变成了11010100,接收方发现1有偶数个(4),符合了偶校验码的规定。接收方就会认为这个数据在传输时并没有发生改变。认为这是合法的。

因此就会发现奇偶校验码的一个问题:

如果在使用偶校验码在数据传输时,如果数据传输时改变了奇数个,那么接收方会发现这个信息发生了改变,如果数据传输时改变了偶数个,那么接收方就会认为这个数据是合法的。

反之奇数校验码也是存在这个问题:

如果在使用奇校验码在数据传输时,如果数据传输时改变了偶数个,那么接收方会发现这个信息发生了改变,如果数据传输时改变了奇数个,那么接收方就会认为这个数据是合法的。

因此,奇偶校验码就存在了这样的局限性。

底层硬件中奇偶校验码的工作原理:

对数据进行进行添加校验位(下图举例偶校验位),即,给最前面加上1bit的工作方式:

相同的数据异或是0。

发起方,进行添加奇偶校验码。

求偶校验码:

理解小技巧:学过c的也知道,数据异或时是满足分配律的。只需要看1的个数,如果是奇数个,无论有多少0得到的结果都是1。如果是偶数个,无论有多少0得到的结果都是0。

异或后如果是0说明1有偶数个,那么为了保证整个校验码有偶数个1,则在校验位添上0;如果是1说明1有奇数个,那么为了保证整个校验码有偶数个1,则在校验位添上1

求奇校验位:

与偶校验位相反,异或后如果是0说明1有偶数个,那么为了保证整个校验码有奇数个1,则在校验位添上1;如果是1说明1有奇数个,那么为了保证整个校验码有奇数个1,则在校验位添上0

上面是对求出给最前面加上1bit的校验位,以下是对校验码进行校验:

接收方进行奇偶校验。

偶校验:

异或结果是0说明1的个数是偶数个,那么对于偶校验码是合法的,数据没有发生改变。

异或结果是1说明1的个数是偶数个,那么对于偶校验码是不合法的,数据发生了改变。

需要注意奇偶校验的局限性:如果这里改变了偶数个,那么还是会认为数据没有改变。

奇校验:

异或结果是0说明1的个数是偶数个,那么对于奇校验码是不合法的,数据发生了改变。

异或结果是1说明1的个数是奇数个,那么对于偶校验码是合法的,数据没有发生改变。

需要注意奇偶校验的局限性:如果这里改变了奇数个,那么还是会认为数据没有改变。

总结:

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

srhqwe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值