시프트 연산자 (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 |