본문 바로가기
CS

시프트 연산 (Shifter)

by 남생이야 2024. 7. 7.

시프트 연산자 (Shifter)

  시프트 연산자는 비트를 이동시켜서 2의 제곱으로 곱하거나 나눗셈을 하는 효과를 내는 연산자이다. 지정된 수 만큼 비트를 왼쪽 혹은 오른쪽으로 이동시킨다. 

 

예: 11001 > 2 = 00110; 11001 << 2 = 00100

 

왼쪽 시프트 Left Shift 

  비트를 왼쪽으로 이동시키고 빈 자리에는 0으로 채운다. 2의 제곱수와 같은 결과를 나타낸다. 

int x = 1; // 0001
int y = x << 2; // 0100, y는 4



 오른쪽 시프트 (Right Shift)

  비트를 오른쪽으로 이동시키고 왼쪽 빈 자리에 0을 채운다. 2의 제곱수를 나눈 결과를 나타낸다. 

int x = 20;     // 0001 0100 (2진수로 20)
int y = x >> 2; // 0000 0101 (2진수로 5)

 

 

 

산술과 논리 시프트 (Arithmetic and Logical)

- 논리 시프트는 부호가 없는 정수에서 사용할 때를 의미한다.

 

- 산술 시프트는 부호가 정해진 정수에서 사용할 때를 의미한다. 

- 왼쪽  시프트에 경우에는 논리 시프트와 같은 결과를 도출 해내지만 오른쪽 시프트 연산 시, 부호 비트의 따라 왼쪽을 그 값으로채운다.

 

'CS' 카테고리의 다른 글

CPU 스케줄링  (0) 2024.07.09
Decoder  (0) 2024.07.08
Accumulator  (0) 2024.07.06
레지스터(Register) - MBR, MAR, IR,PC  (0) 2024.07.02
메모리 단편화  (0) 2024.06.27