设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g(x)=x4+x+1,求C
来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/11/10 15:09:37
设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g(x)=x4+x+1,求CRC检测码
设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g
(x)=,阶数r为4,即10011.首先在t(x)的末尾添加4个0构成,数据块就成了10010
00111000000.然后用g(x)去除,不用管商是多少,只需要求得余数y(x).下表为给
出了除法过程.
除数次数
被除数/ g(x)/结果
余数
0
1 001000111000000
100111000000
1 0011
0 000100111000000
1
1 00111000000
1000000
1 0011
0 00001000000
2
1 000000
1100
1 0011
0 001100
从上面表中可以看出,CRC编码实际上是一个循环移位的模2运算.对CRC-4,我们假
设有一个5 bits的寄存器,通过反复的移位和进行CRC的除法,那么最终该寄存器中的值
去掉最高一位就是我们所要求的余数.所以可以将上述步骤用下面的流程描述:
//reg是一个5 bits的寄存器
把reg中的值置0.
把原始的数据后添加r个0.
While (数据未处理完)
Begin
If (reg首位是1)
reg = reg XOR 0011.
把reg中的值左移一位,读入一个新的数据并置于register的0 bit的位置.
End
reg的后四位就是我们所要求的余数.
这种算法简单,容易实现,对任意长度生成多项式的G(x)都适用.在发送的数据
不长的情况下可以使用.但是如果发送的数据块很长的话,这种方法就不太适合了.它
一次只能处理一位数据,效率太低.为了提高处理效率,可以一次处理4位、8位、16位
、32位.由于处理器的结构基本上都支持8位数据的处理,所以一次处理8位比较合适.
为了对优化后的算法有一种直观的了解,先将上面的算法换个角度理解一下.在上
面例子中,可以将编码过程看作如下过程:
由于最后只需要余数,所以我们只看后四位.构造一个四位的寄存器reg,初值为
0,数据依次移入reg0(reg的0位),同时reg3的数据移出reg.有上面的算法可以知道
,只有当移出的数据为1时,reg才和g(x)进行XOR运算;移出的数据为0时,reg不与g
(x)进行XOR运算,相当与和0000进行XOR运算.就是说,reg和什么样的数据进行XOR移
出的数据决定.由于只有一个bit,所以有种选择.上述算法可以描述如下,
//reg是一个4 bits的寄存器
初始化t[]={0011,0000}
把reg中的值置0.
把原始的数据后添加r个0.
While (数据未处理完)
Begin
把reg中的值左移一位,读入一个新的数据并置于register的0 bit的位置.
reg = reg XOR t[移出的位]
End
上面算法是以bit为单位进行处理的,可以将上述算法扩展到8位,即以Byte为单位
进行处理,即CRC-32.构造一个四个Byte的寄存器reg,初值为0x00000000,数据依次移
入reg0(reg的0字节,以下类似),同时reg3的数据移出reg.用上面的算法类推可知,
移出的数据字节决定reg和什么样的数据进行XOR.由于有8个bit,所以有种选择.上述
算法可以描述如下:
//reg是一个4 Byte的寄存器
初始化t[]={…}//共有=256项
把reg中的值置0.
把原始的数据后添加r/8个0字节.
While (数据未处理完)
Begin
把reg中的值左移一个字节,读入一个新的字节并置于reg的第0个byte的位置.
reg = reg XOR t[移出的字节]
End
算法的依据和多项式除法性质有关.如果一个m位的多项式t(x)除以一个r阶的生
成多项式g(x),将每一位(0=
(x)=,阶数r为4,即10011.首先在t(x)的末尾添加4个0构成,数据块就成了10010
00111000000.然后用g(x)去除,不用管商是多少,只需要求得余数y(x).下表为给
出了除法过程.
除数次数
被除数/ g(x)/结果
余数
0
1 001000111000000
100111000000
1 0011
0 000100111000000
1
1 00111000000
1000000
1 0011
0 00001000000
2
1 000000
1100
1 0011
0 001100
从上面表中可以看出,CRC编码实际上是一个循环移位的模2运算.对CRC-4,我们假
设有一个5 bits的寄存器,通过反复的移位和进行CRC的除法,那么最终该寄存器中的值
去掉最高一位就是我们所要求的余数.所以可以将上述步骤用下面的流程描述:
//reg是一个5 bits的寄存器
把reg中的值置0.
把原始的数据后添加r个0.
While (数据未处理完)
Begin
If (reg首位是1)
reg = reg XOR 0011.
把reg中的值左移一位,读入一个新的数据并置于register的0 bit的位置.
End
reg的后四位就是我们所要求的余数.
这种算法简单,容易实现,对任意长度生成多项式的G(x)都适用.在发送的数据
不长的情况下可以使用.但是如果发送的数据块很长的话,这种方法就不太适合了.它
一次只能处理一位数据,效率太低.为了提高处理效率,可以一次处理4位、8位、16位
、32位.由于处理器的结构基本上都支持8位数据的处理,所以一次处理8位比较合适.
为了对优化后的算法有一种直观的了解,先将上面的算法换个角度理解一下.在上
面例子中,可以将编码过程看作如下过程:
由于最后只需要余数,所以我们只看后四位.构造一个四位的寄存器reg,初值为
0,数据依次移入reg0(reg的0位),同时reg3的数据移出reg.有上面的算法可以知道
,只有当移出的数据为1时,reg才和g(x)进行XOR运算;移出的数据为0时,reg不与g
(x)进行XOR运算,相当与和0000进行XOR运算.就是说,reg和什么样的数据进行XOR移
出的数据决定.由于只有一个bit,所以有种选择.上述算法可以描述如下,
//reg是一个4 bits的寄存器
初始化t[]={0011,0000}
把reg中的值置0.
把原始的数据后添加r个0.
While (数据未处理完)
Begin
把reg中的值左移一位,读入一个新的数据并置于register的0 bit的位置.
reg = reg XOR t[移出的位]
End
上面算法是以bit为单位进行处理的,可以将上述算法扩展到8位,即以Byte为单位
进行处理,即CRC-32.构造一个四个Byte的寄存器reg,初值为0x00000000,数据依次移
入reg0(reg的0字节,以下类似),同时reg3的数据移出reg.用上面的算法类推可知,
移出的数据字节决定reg和什么样的数据进行XOR.由于有8个bit,所以有种选择.上述
算法可以描述如下:
//reg是一个4 Byte的寄存器
初始化t[]={…}//共有=256项
把reg中的值置0.
把原始的数据后添加r/8个0字节.
While (数据未处理完)
Begin
把reg中的值左移一个字节,读入一个新的字节并置于reg的第0个byte的位置.
reg = reg XOR t[移出的字节]
End
算法的依据和多项式除法性质有关.如果一个m位的多项式t(x)除以一个r阶的生
成多项式g(x),将每一位(0=
设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g(x)=x4+x+1,求C
求一个CRC校验C++源代码.发送数据为1101011011,生成的多项式为P(X)=X4+X+1(X4为X的4次方),
CRC校验码的生成多项式为G(X)=X5+X4+X2+1,要发送的数据比特序列为
CRC校验码计算问题CRC校验码的生成多项式为G(X)=X5+X4+X2+1;要发送的数据比特序列为1010110101
CRC生成多项式为 X4+X2+1 ,假设待发送信息的多项式 M(X)=X7+X5+X4+X+1, 计算 CRC的校验码
生成多项式为G(x)=x5+x4+1,数据的比特序列为1001001010,求其CRC校验码比特序列!
若信息位为11100011,生成多项式为G(x)=x5+x4+x+1,则计算出的CRC校验码为多少?
采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是怎么求的?
数据比特序列为100101110010,生成多项式G(x)=X 4+X 2+1,计算CRC校验码.要求讲解和过程.(X4
要发送的数据为101110.采用CRC的生成多项式是P(X)=X3+1.试求应添加在数据后面的余数.
对于(7,3)码,已知生成多项式G(X)=X4+X3+X2+1,对信息码101进行CRC校验,结果发送的代码序列是 .
CRC校验码的生成多项式为G(X)=X5+X4+X+1,则除式是什么?