编码和校验码

本文包含奇偶,海明,循环冗余校验码

校验背景

当两台设备在通信的时候,由于许多不可控因素,接收方收到的信息不一定是发送方发出的信息,即传输过程中信息发生了改变。那么我们就需要添加一些校验的方法来帮助我们确定收到的信息是否正确。这便是校验发生的背景。

一些基本概念

码字:指我们通过一系列二进制代码表示的信息,通常是人为定义的(如令 A为011 )

码距:两个合法码字对应位上数字的不同位的个数(如001和010的码距为2)

奇偶校验

奇校验

定义:在开头添加一位数保证一段数据中出现奇数个1

如:

010 -> 0010

011 -> 1011

偶校验

定义:在开头添加一位数保证数据中出现偶数个1

如:

001 -> 1001

011 -> 0011

但是不管是奇校验还是偶校验,他们都不能完全保证数据的正确性,如果一次性跳变两位,他们还是无法检测出数据是否正确。同时他们也不能定位跳变的位置。

海明校验码

海明码设计思路:通过分组校验和多个校验位来标注出错位置

假设我们的校验位为k位,信息位为n位。我们的校验位可以表示种状态。

如果要表示所有状态,那么我们就需要保证

以下是n和k的对应关系

海明码求解方法

以1010为例

1.确定海明码位数

可知,我们的,所以海明码的位数为7位

2.确定校验位的分布

校验位应当放在的位置上,所以三位校验位应该放在1,2,4三个位置上

然后信息位按顺序放在其余位置(如果你想反过来放也可以,计算出来的结果也是对应下表的)

3.计算校验位

校验位由信息位计算得出:

因为信息位分别放在7,6,5,3几个位置上(其他位置被校验位占了),所以对这些数进行异或运算来计算出校验位。如下图,D是信息位

所以我们得到的海明码就是1010010

校验过程

校验就是将校验位和接受到的信息位进行异或运算

假设我们接受到1010010,即数据没有变化,那么我们计算出来的S1 = S2 = S3 = 0,即我们的数据是正确的

如果接收到1010000,我们的S1 = 0 , S2 = 1 , S3 = 0,所以第二位出错

循环冗余校验码(CRC码)

一般来说,求解CRC码时,会提供生成多项式和信息码。

CRC码的结构一般是K位信息位加上R位校验位

如何根据生成多项式得到对应的二进制码

当生成多项式为

其对应的二进制码就为10111

求解CRC码

先根据生成多项式得到二进制码

将信息码左移R位,低位补0

我们将得到的二进制码对位移后的信息码进行模2除法,产生的余数即为校验码

假设我们的信息码为101001,二进制码为1101,计算步骤如下:

于是我们的CRC码就为101001 001

纠错

接收方将收到的CRC码用二进制码(生成多项式的)进行模2除法

如果余数为0,则正确

反之余数指向的位出错(这个要看生成多项式给的合不合理)

相关推荐
mifengxing2 天前
计算机组成原理——存储器系统
开发语言·考研·计算机组成原理·复习笔记·计算机408
硬核子牙6 天前
大模型是怎么学会的
人工智能·chatgpt·计算机组成原理
mifengxing11 天前
计组|定点数移位运算+定点数、无符号数加减运算+溢出判断+运算电路
数字电路·计算机组成原理
A.零点12 天前
【期末复习,408 考研计组全程笔记 】— 第4章 :指令系统
笔记·考研·408·计算机组成原理
mifengxing12 天前
计算机组成原理概述
笔记·考研·计算机组成原理·复习笔记
m0_5474866612 天前
《计算机组成原理教程》全套PPT课件
计算机·计算机组成原理
鱼73314 天前
数据的表示--进位计数制与转换
计算机组成原理
鱼73317 天前
计算机的性能指标(2)--运算速度指标
计算机组成原理
Justice Young17 天前
计算机组成原理【期末冲刺版】
计算机组成原理