CRC除法的余数为什么跟普通除法产生的余数不一样
时间:10-02
整理:3721RD
点击:
以一位朋友的CRC计算的例子为基础
信息字段代码为: m(x)=x6+x4+x3+1 代码为:1011001 10进制89
生成多项式: g(x)=x4+x3+1 代码为:11001 10进制25
普通计算方法 89/25 = 3 余数 14 即1110
而CRC计算过程及结果如下
m(x)x4=x10+x8+x7+x4 对应的代码记为:10110010000 即 左移4位
m(x)x4 在与 g(x)进行 模2的除法运算,相当于按位异或,计算过程如下:
1 0 1 1 0 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 1 1 1 1 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 1 1 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 0 1 0 --------------> 余数 即 校验码 结果为十进制 10
请问我的计算过程哪里出现了问题?还是异或本身的计算特性
小弟问题很傻瓜,各位看官请轻拍
信息字段代码为: m(x)=x6+x4+x3+1 代码为:1011001 10进制89
生成多项式: g(x)=x4+x3+1 代码为:11001 10进制25
普通计算方法 89/25 = 3 余数 14 即1110
而CRC计算过程及结果如下
m(x)x4=x10+x8+x7+x4 对应的代码记为:10110010000 即 左移4位
m(x)x4 在与 g(x)进行 模2的除法运算,相当于按位异或,计算过程如下:
1 0 1 1 0 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 1 1 1 1 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 1 1 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 0 1 0 --------------> 余数 即 校验码 结果为十进制 10
请问我的计算过程哪里出现了问题?还是异或本身的计算特性
小弟问题很傻瓜,各位看官请轻拍
你的问题是:
在做除法的过程中,我们是用被除数减去商乘以除数。你是直接用被除数减去除数。
正确的结果为:
x2 +x
___________
x4+x3+1 | x6+x4+x3+1
x6+x5+x2
---------------
x5+x4+x3+x2 +1
x5+x4+x
-----------------------
x3+x2+x+1
