본문 바로가기

Programming/.NET

[C#] 시프트(Shift) 연산자

비트 단위의 데이터연산시 사용합니다. 예를 들어 정수 10은 비트값으로 아래와 같습니다.

 

00000000 00001010

 

참고로 32나 64비트에 따라 자리수만큼 표시되어야 하지만 간소화를 위해 16비트로 표시하였습니다.

 

시프트연산자는 이 비트를 오른쪽으로 혹은 왼쪽으로 0을 채워 밀어주는 역활을 수행 합니다.

 

int i = 10;

int leftShift = i << 3;
int rightShift = i >> 3;

Console.WriteLine("Result : {0} | {1}", leftShift, rightShift);

 

<< 표시는 왼쪽 시프트연산자이며 >> 표시는 오른쪽 시프트연산자입니다. 이 연산자에 따라 10 (1010)을 왼쪽으로 3개의 비트를 밀면

 

00000000 01010000

 

이 되고 이 비트를 10진수 정수로 변환하면 80이 됩니다. 반면 오른쪽으로 3개비트를 밀게되면

 

00000000 00000001

 

이 되어 결과는 1이 됩니다.

 

이 연산방식은 왼쪽시프트는 1비트씩 움직일때 마다 2를 곱한것과 같고 오른쪽 시프트는 2로 나눈것과 같은 값이 됩니다.

'Programming > .NET' 카테고리의 다른 글

[C#] params  (0) 2019.03.19
[C#] HttpWebRequest / HttpWebResponse / WebClient  (0) 2019.03.12
[C#] 시프트(Shift) 연산자  (0) 2019.03.05
[C#] 예외처리(try ~ catch)  (0) 2019.02.19
[C#] ? / Nullable  (0) 2019.02.12
[C#] partial  (0) 2019.02.07

태그