回复:问:二进制码与循环码整字节转换

醉书生

  • 帖子

    718
  • 精华

    25
  • 被关注

    18

论坛等级:侠士

注册时间:2004-06-13

普通 普通 如何晋级?

发布于 2006-03-30 17:07:53

0楼

你觉迷惑的是可能是为什么将LB1不断右移,与LB2异或就能得到结果?好象与循环码的定义规则不符,其实这正是该算法的精髓所在
我们看看循环码的转换规则:先取 0 与最高位异或,得最高有效位,再用该有效位与次高异或,得到次高有效位……
0与任何数异或是不影响该位的(你可以看看循环码的码表,循环码和二进制码的最高位都是相同的就是这个道理),也就是说第一次有效异或运算实际上是拿最高位与次高位异或,正好LB1右移一位与LB2异或符合最高位的运算规则。那么你可能要问,整字节异或不是将结果后面的位都改变了吗?这也就是算法的精华了,最高位是0还是1决定了循环的次数,无论是奇次还是偶次,最终正好将异或的结果还原了
这只是转换规则在具体语言中的一种算法实现,避免了逐次取位,用较简洁的指令得到结果。我们知道S7-200的子程序中是不支持重复定义符号的,所以不能用重复定义的方法将字节分解成位,只能用掩码相与的方法取得位,实现起来会比较繁琐
生命存在的方式只有两种:腐烂或燃烧
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33307条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。