- 논리적 시프트
레지스터 내의 데이터 비트들을 왼쪽/오른쪽으로 한 칸씩 이동시키는 것
비트가 옮겨진 후 0이 들어옴
- 시프트 레지스터
데이터 비트들을 좌측/우측으로 이동시키는 기능을 가진 레지스터
플립-플롭 출력을 이용하여 비트들을 좌/우로 옮김
- 순환 시프트
오버플로우 한 값들은 순환됨
- 직렬 데이터 전송
두 레지스터들 간에 접속된 하나의 선을 통하여 데이터들을 한 번에 한 비트씩 전송하는 동작
옮기려는 레지스터에 순환 시프트를 하고 옮김 받는 레지스터에 선을 연결하여 비트 수 만큼 시프트 시킴
- 산술적 시프트
부호 비트는 그래도 두고 수의 크기를 나타내는 비트들만 시프트 시킴
좌로 갈 시에는 부호는 유지되고 오버플로우 한 값들은 버려지게 됨
우로 갈 시에는 부호는 유지되며 상위 플래그들은 부호와 동일한 값이 채워지게 됨(부호 비트의 확장과 동일한 결과)
- C 플래그를 포함한 시프트 연산
C플래그 (올림수 플래그)를 이용한 연산
논리, 순환, 산술적 시프트에 이용할 수 있음
산술적 시프트에는 부호가 바뀌는 것을 확인하고 다른 연산에 사용하지 않기 하기 위해 오버플로우 플래그를 세트하거나 C플래그가 레지스터로 못 들어오게 하는 방법