循环冗余校验码

tongqiong0209 2011-08-15 06:08:28
假定被检验的数据M(x)=1000,其选择生成多项式为G(x)= x3(x的3次幂)+x+1,该数据的循环冗余校验码应为( )

怎么做?
...全文
431 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
abee23 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tongqiong0209 的回复:]

其他部分都看懂了,你的那张图片为什么不是这样
http://hi.csdn.net/space-6337695-do-album-picid-892882.html
二进制的相除是不是不用理会进位,只要対应位相减就行
我才开始学,很多概念不是很清楚。说完这个问题就结贴,谢谢了!
[/Quote]

lz搞定了吧?
上面的除法是“模二除法”,也就是计算的时候,对应的两个位是进行异或运算的,两个位不一样则结果是1.

最后就搞出那个余数了。

然后把计算出来的余数,添加到真实数据的后面,LZ可以再算一下余数变为0了。
abee23 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tongqiong0209 的回复:]

其他部分都看懂了,你的那张图片为什么不是这样
http://hi.csdn.net/space-6337695-do-album-picid-892882.html
二进制的相除是不是不用理会进位,只要対应位相减就行
我才开始学,很多概念不是很清楚。说完这个问题就结贴,谢谢了!
[/Quote]

LZ搞定了吗? MS楼主不怎么清楚是怎么“除”的呀!
我回去看看了,这个“除法”是有名堂的!,叫 ”模二除法“,也就是除数与被除是进行异或运算的!

两个二进制位进行异或运算就是==如果不相同,则结果为1.
上面那个图片就是这样画出来和咯。

abee23 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tongqiong0209 的回复:]
其他部分都看懂了,你的那张图片为什么不是这样
http://hi.csdn.net/space-6337695-do-album-picid-892882.html
二进制的相除是不是不用理会进位,只要対应位相减就行
我才开始学,很多概念不是很清楚。说完这个问题就结贴,谢谢了!
[/Quote]

这个不是真的二进制除法呀!只是手动计算是,看其来像是在做除法!
其实是上下位不一样是为1,其他为0.
至到计算出余数,也就是那个循环冗余校验码。

LZ看看 CRC原理 这个就是CRC检测用的 循环冗余校验码呀! 没记错的话。
呵呵。
tongqiong0209 2011-08-17
  • 打赏
  • 举报
回复
tongqiong0209 2011-08-17
  • 打赏
  • 举报
回复
其他部分都看懂了,你的那张图片为什么不是这样
http://hi.csdn.net/space-6337695-do-album-picid-892882.html
二进制的相除是不是不用理会进位,只要対应位相减就行
我才开始学,很多概念不是很清楚。说完这个问题就结贴,谢谢了!
大熊猫侯佩 2011-08-17
  • 打赏
  • 举报
回复
这个楼主找本体系结构的书,自己看一下即可。

没什么难度。
abee23 2011-08-16
  • 打赏
  • 举报
回复
LZ看出是怎么进行“除法“了的吧?
没得错就是这个样了的。。。
abee23 2011-08-16
  • 打赏
  • 举报
回复
LZ看出是怎么进行“除法“了的吧?
没得错就是这个样了的。。。
abee23 2011-08-16
  • 打赏
  • 举报
回复
循环冗余校验码的长度与生成多项式有关!
上面的生成多项式其实就是1011=1^3+0^2+1^1+1^0
有了 生成多项式长度 后! 就能确定最终循环冗余校验码的长度!
设生成多项式的值为p=1011 (二进制),那么 循环冗余校验码的长度n=3

于是可以进行 循环冗余校验码 的计算了!

循环冗余校验码 的作用是添加到真实数据的后面,与真实数据一起发送出去!在接收端则用接收的数据与生成多项式的值运算,这个运算同时可以在发送端计算出 循环冗余校验码的

计算前;
给真实数据的后面添加 (循环冗余校验码的长度n)个二进制0 ,上面n=3!
于是 用于计算 循环冗余校验码 的数据为;data= 1000 000 {前面4位是真实数据,后面是临时填充的000,目的是计算出 循环冗余校验码}

于是把data=1000 000看做是被除数,把p=1011看作是除数!

用 data 除以 p 得到的余数就是 循环冗余校验码!

最后再发送数据的时候把 循环冗余校验码 添加到真实数据的后面! 上面计算出的 循环冗余校验码=101

于是发送的数据为; 1000 101
接收端接收数据后,用同样的方法把接收的数据与 p=1011 运算( 同样上面 用 data 除以 p 得到的余数的方法)

如果结果余数是 0 ,则表明数据是完整的啦! 否则就是表明数据在传输过程中出现了”位“的差错啦、。


至于计算这个 “用 data 除以 p 得到的余数”
这个用文字说起来对我来说有点难度!
我用图片表达一下:应该看了清楚吧。



tongqiong0209 2011-08-16
  • 打赏
  • 举报
回复
能不能再讲得详细点
而循环冗余校验码的长度=3 这个是怎么来的?
abee23 2011-08-16
  • 打赏
  • 举报
回复
没有记错!
那个生成多项式=1011
而循环冗余校验码的长度=3
循环冗余校验码=101
然后带上了循环冗余校验码的数据就是=1000101

另一边则用这个带上了循环冗余校验码的数据与1011运算,余数全为0则表示数据完整 !

这个算法叫做 **模2**什么的。。。。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧