海明码和CRC编码的图解和详细计算过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、CRC编码
1、已知多项式和原报文,求CRC编码,如:使用多项式G(x)=x^5 + x^4 + x +1,对报文10100110进行CRC编码,则编码后的报文是什么?
方法与步骤:
步骤1:对报文10100110,在末尾添加所给多项式的最高次阶个0,如本题为x^5,则添加5个0,变为:1010011000000。
步骤2:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。
步骤3:步骤1中求得的1010011000000对步骤2中求得的110011进行模二除法,所得到的余数即为校验码,把校验码添加在原报文尾部即为所求的编码报文1010011011000,具体如下:
2.已知道接收到的CRC编码,求原编码或判断是否出错,如:已知G(x)=x^5 + x^4 + x +1,接收的为1010011011001,问是否出错?
步骤一:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。
步骤二:用接收的报文1010011011001对步骤一的110011进行模二除法,看余数是否为0,如为0则正确,如不为0,则出错,计算余数为1,则出错。如下图:
二、海明码
1.求海明码,如:求1011海明码。
步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^3≥3+4+1,所以取r=3,即校验码为3位。
步骤二:画图,并把原码的位编号写成2的指数求和的方式,其中位编号长度为原码和校验码个数之和,从1开始。校验码插在2的阶码次方的位编号下,且阶小于r。如下:
原码的位编号写成2的指数求和:
7=2^2+2^1+2^0;
6=2^2+2^1;
5=2^2+2^0;
3=2^1+2^0;
步骤三:求校验位,即每个校验位的值为步骤二中“原码的位编号写成2的指数求和”式子中相应2的阶出现的位编号下原码的值异或。即:
r0=I4异或I2异或I1=1; (2^0次出现在7,5,3位,其对应的值为I4,I2,I1)
r1=I4异或I3异或I1=0; (2^1次出现在7,6,3位,其对应的值为I4,I3,I1)
r2=I4异或I3异或I2=0; (2^0次出现在7,6,5位,其对应的值为I4,I3,I2)
把r0,r1,r2带入海明码,得所求的海明码为:1010101
2.已知海明码,求原码或判断是否出错并改正错位,如:信息位8位的海明码,接收110010100000时,判断是否出错,并求出发送端信息位。
步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^4≥4+8+1,所以取k=4,即校验码为4位。
步骤二:根据作图,求得信息位编码和发过来的校验码记为r,并由原编码从新计算出新的校验码与发来的校验码r进行异或运算,具体如下:
得到,原码11000100,发送来的校验码r为1000
再根据求R,把原码的位编号写成2的指数求和:
12=2^3+2^2;
11=2^3+2^1+2^0;
10=2^3+2^0;
9=2^3+2^0;
7=2^2+2^1+2^0;
6=2^2+2^1;
5=2^2+2^0;
3=2^1+2^0;
求得:
S3=r3异或(I8异或I7异或I6异或I5)
S2=r2异或(I8异或I4异或I3异或I2)
S1=r1异或(I7异或I6异或I4异或I3异或I1)
S0=r0异或(I7异或I5异或I4异或I2异或I1)
S3S2S1S0,其十进制为0,表示没出错,如果不为零,则其十进制数即为出错的位。
本题S3S2S1S0=1001,十进制为9,即第九位出错。改过来既为:11010100