2017-01-03 23 views

답변

0

이것은 프로그래밍과 관련하여 변두리로이지만, 이보다 더 좋은 대답을 얻을 수있는 one of the other sites에서 더 좋을 수도 있습니다.

그러나 실제 답변 (단점이 무엇이든간에)은 각 국가가 다음 상태를 전적으로 지시하지 않기 때문에 어렵습니다. 즉, 패턴 0010 뒤에 0100 (왼쪽으로 이동) 또는 0001 (오른쪽으로 이동)을 따라야하는지 여부를 알 수있는 방법이 없습니다.

그러나이 함께 할 수있는 방법이 하는 6 비트의 rotating shift register(A)을 다음과 같이 다음

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 ... 

(A)를 링크가 지정하는 것 같지만 변화를 비 회전 레지스터의 경우 가장 오른쪽 비트의 결과를 맨 왼쪽 비트에 다시 공급하는 것만으로 회전하는 것을 만드는 것이 간단한 문제 여야합니다.