quote:以下是引用Zane在2011-04-07 10:48:15的发言:
楼上是不是理解有误,我要求的是任意的N位(N>3)构成的循环寄存器的循环移位操作,而不是一次循环移动N位,因此不可能出现程序扫描超时的情况,而且这个程序一般是在硬件中断内实现的,每次循环移动1位,当然循环移动多位也是允许的。
的确,本程序是在一个扫描周期完成,当移位的总数或移位的位数较大时会发生超时。但却实现了任意位数移动任意位。稍加改动应该就不会受扫描周期的影响,只是处理的结果需要N多次扫描才能得到结果。我想更重要的是方法,实际上的问题规模是达不到这么大的。
我想基本上是分为三步吧:
假设移位的总数为X,需要移位数为y
1、对移出的位y位进行缓存
2、对剩下的位x-y进行左移位或右移位
3、装载缓存的y位