비트 왼쪽 시프트 연산자(<<)
왼쪽 시프트 연산자는 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동시킵니다. 이동 후 생긴 빈자리는 0으로 채워지며, 일반적으로 값에 2의 n승을 곱한 것과 같은 효과를 냅니다. 예를 들어 1비트 왼쪽 시프트는 값이 두 배가 됩니다.
비트 오른쪽 시프트 연산자(>>)
오른쪽 시프트 연산자는 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동시킵니다. 밀려나간 하위 비트는 버려지며, 부호 있는 정수의 경우 부호 비트가 유지됩니다. 일반적으로 값에 2의 n승을 나눈 것과 같은 효과를 냅니다.
다음 예제는 C#에서 비트 왼쪽 시프트 연산자와 오른쪽 시프트 연산자를 사용하는 방법을 보여줍니다.
예제
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a << 2; /* 240 = 1111 0000 */
Console.WriteLine("Value of c is {0}", c);
c = a >> 2; /* 15 = 0000 1111 */
Console.WriteLine("Value of c is {0}", c);
Console.ReadLine();
}
}
}예제 설명
변수 a의 값은 10진수 60이며, 2진수로 표현하면 0011 1100입니다.
a << 2: 비트를 왼쪽으로 2칸 이동하면1111 0000, 즉 10진수 240이 됩니다. (60 × 4)a >> 2: 비트를 오른쪽으로 2칸 이동하면0000 1111, 즉 10진수 15가 됩니다. (60 ÷ 4)
실행 결과
Value of c is 240 Value of c is 15