2017-01-03 106 views

回答

0

这是最好的勉强与编程有关,但它可能会更好在one of the other sites你肯定会得到比这更好的答案。

然而,根据实际答案(无论其缺点),这是很难做到的,因为每个州并不完全规定以下状态。因此,我的意思是无法判断0010后面是0100(左转)还是0001(右转)。

然而,有办法一起做这六位rotating shift register(一)如下:

b5 b4 b3 b2 b1 b0 
+-> 1 0 0 0 0 0 --+ 
|      | 
+-----------------------+ 

然后,结合位,以产生实际结果位:

b5  -> r3 
b4 OR b0 -> r2 
b3 OR b1 -> r1 
b0  -> r0 

看到重复模式这样:

b5 b4 b3 b2 b1 b0 | b5 b4 ... 
r3 r2 r1 r0 r1 r2 | r3 r2 ... 

而且,如果你想在结束时有一些延迟,你只需使用一个具有稍微不同组合的8位移位寄存器。使得它不散两倍长的r3r0

b7 OR b0 -> r3 
b6 OR b1 -> r2 
b5 OR b2 -> r1 
b4 OR b3 -> r0 

这给:

b7 b6 b5 b4 b3 b2 b1 b0 | b7 b6 ... 
r3 r2 r1 r0 r0 r1 r2 r3 | r3 r2 ... 

(一)虽然这种联系似乎指定非旋转移寄存器,只需将最右边的位的输出回馈到最左边的位置,就可以创建一个旋转的应用程序。