奇偶校验码
视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502
前言
在本篇中,你将掌握
- 校验原理、奇偶校验的相关定义
- 计算机内部如何实现奇偶校验
在计算机内部进行存储、计算的数据都是以二进制形式传送,由于计算机元器件或环境噪音干扰有可能导致计算机内部二进制数据发生错误,所以我们必须考虑这种错误。
1 校验原理
如上图,假设我们有两种对数据A、B、C、D的编码方式:
1.
信息 | A | B | C | D |
---|---|---|---|---|
编码 | 00 | 01 | 10 | 11 |
信息 | A | B | C | D |
---|---|---|---|---|
编码 | 100 | 001 | 010 | 111 |
这其中的编码就是码字:由若干位代码组成的一个字叫码字(码字包含了合法码字和不合法码字,如第二种ABCD的编码方式种101就是不合法的码字)
将两个码字逐位对比,具有不同的位的个数被称为两个码字间的距离,如00和11的距离为2
一种编码方案中可能有若干个合法的码字,各合法码字间的最小距离被称为“码距”,如第一种d=1,第二种d=2
当d=1时,无校验能力;当d=2时,有校验能力(奇偶校验码);当d>=3时,若设计合理,可能有校验甚至纠错能力(如海明码)。
2 奇偶校验
若有n个有效信息位,可在首部或尾部加上1位的奇偶校验位
奇偶校验码的定义也很简单,整个校验码中1的个数为奇数还是偶数,例
求1001101的奇偶校验码
易知1001101有4个1,假设我们在首部加奇偶校验位
则奇校验码为11001101,偶校验码为01001101
同样最后数据传输校验时,也是以这种奇数或偶数个1进行校验。但值得注意的是,如果发生了2bit位的错误(偶数个位发生变化),奇偶校验码将没用了。
但上述都是我们人类对于奇偶的计数统计,对于计算机只需要对所有信息位进行异或操作就可以实现求偶校验位和进行偶校验
如对于1001101的求偶校验位:
所有位的依次异或得到0,故1001101的偶校验位为0
对01001101进行偶校验,若结果为1说明出错
01001101的异或结果为0,故没错
3 小结
本篇重点,校验原理和奇偶校验的有关定义和计算机内部的奇偶校验的异或实现。