C# 오른쪽 시프트(>>) 연산자란?
C#의 오른쪽 시프트 연산자(>>)는 비트 조작(bit manipulation)에 사용되는 기본 연산자 중 하나입니다. 이 연산자는 왼쪽 피연산자(operand)의 값을, 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동시킵니다.
비트가 오른쪽으로 이동할 때마다 값은 사실상 2로 나누어지는 효과가 있습니다. 예를 들어, 2비트를 오른쪽으로 시프트하면 원래 값의 1/4이 됩니다.
오른쪽 시프트 연산자 예제 코드
다음은 C#에서 오른쪽 시프트 연산자를 사용하는 간단한 예제입니다.
using System;
namespace OperatorsAppl {
class Program {
static void Main(string[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 0;
b = a >> 2; /* 15 = 0000 1111 */
Console.WriteLine("Right Shift Operator - Value of b is {0}", b);
Console.ReadLine();
}
}
}코드 동작 원리 설명
위 코드에서 변수 a의 값은 60이며, 이를 2진수로 표현하면 다음과 같습니다.
0011 1100
여기서 위 예제처럼 오른쪽 시프트 연산자를 적용합니다. 아래 표현식은 비트를 오른쪽으로 두 번 이동시킵니다.
a >> 2
각 비트가 오른쪽으로 한 칸씩 두 번 이동하면서, 맨 오른쪽의 두 비트(0, 0)는 버려지고 왼쪽에는 0이 채워집니다.
실행 결과
연산 결과 값은 15가 되며, 2진수로는 다음과 같습니다.
15 = 0000 1111
즉, 60을 2²인 4로 나눈 값인 15가 출력되는 것을 확인할 수 있습니다. 이처럼 오른쪽 시프트 연산자는 나눗셈 연산을 빠르게 수행해야 하거나, 비트 단위로 데이터를 처리해야 하는 경우에 유용하게 활용됩니다.