[C#] 비트 연산자(Left/Right Shift, 논리 연산자 등)
개인 학습을 기록한 내용을 담고 있어 추후 수정될 수 있습입니다.
C# 에서는 bit 단위 연산을 위한 전용 연산자를 제공하는데 그 이름이 비트 연산자 입니다.
비트 연산자는 비트 Shift 연산자, 비트 논리 연산자가 있습니다.
이번 포스트에서는 C# 의 비트 연산자를 확인해 보겠습니다.
비트 Shift 연산자
비트 Shift 연산자는 전달받은 수만큼 주어진 비트를 오른쪽(») 혹은 왼쪽(«)으로 옮깁니다.
Left Shift 연산자 («)
1
2
byte num = 1;
num = (num << 2);
위 코드를 실행시키면 num의 값은 4가 됩니다.
1 을 저장하고 있던 num 의 데이터는 이진수로 (0000’0001) 이라고 표현됩니다.
이 데이터에서 모든 숫자를 왼쪽으로 2 만큼(« 2) 이동시킨다면
(0000’0100) 라는 이진수가 되어 값이 4로 변하게 됩니다.
비트의 이동에 따라 새롭게 생긴 공간은 0으로 채웁니다.
Right Shift 연산자 (»)
1
2
byte num = 4;
num = (num >> 2);
이 코드는 Left Shift 연산자와 반대로 동작하는 연산자 입니다.
num 변수가 저장하고 있는 데이터를 이진수로 표현하면 (0000’0100) 이 됩니다.
여기서 모든 이진수를 오른쪽으로 2 칸씩(» 2) 옮기면 (0000’0001) 이 됩니다.
또한 Left Shift 연산자처럼 새롭게 생긴 공간은 0으로 채워줍니다.
비트 논리 연산자
이 연산자는 같은 자리에 대응하는 비트끼리 연산하는 연산자 입니다.
즉 첫 번째 비트는 첫 번째 비트끼리만, 두 번째 비트는 두 번째 비트끼리만 비교합니다.
이항 연산자
- & : 같은 자리의 비트끼리 AND 연산
** ** : 같은 자리의 비트끼리 OR 연산 - ^ : 같은 자리의 비트끼리 XOR 연산
단항 연산자
- ~ : 보수 취하기 (모든 비트를 반전, 0을 1로, 1을 0으로)
’!’ 연산자는 내부의 값을 현재 값이 양수면 0으로, 0이면 1로 변하는 연산자이므로
‘~’ 연산자와는 다릅니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.