Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 비트 연산자 완벽 정리: 종류와 사용법 예제

비트 연산자(Bitwise Operator)는 데이터를 비트(bit) 단위로 다루며, 각 비트별로 연산을 수행하는 연산자입니다. 주로 정수형 값의 이진수 표현을 직접 조작해야 할 때 사용되며, 플래그 처리, 성능 최적화, 저수준 프로그래밍 등에서 유용하게 활용됩니다.

C#에서 제공하는 비트 연산자는 다음과 같습니다.

연산자설명예시
&AND(논리곱) 연산자 — 두 피연산자 모두에 해당 비트가 1로 설정되어 있을 때만 결과에 1을 복사합니다.(A & B) = 12, 즉 0000 1100
|OR(논리합) 연산자 — 두 피연산자 중 어느 한쪽에라도 해당 비트가 설정되어 있으면 결과에 1을 복사합니다.(A | B) = 61, 즉 0011 1101
^XOR(배타적 논리합) 연산자 — 두 피연산자 중 하나에만 비트가 설정되어 있고 양쪽 모두에는 없을 때 1을 복사합니다.(A ^ B) = 49, 즉 0011 0001
~보수(NOT) 연산자 — 단항 연산자로, 모든 비트를 반전('뒤집기')합니다.(~A) = -61, 부호 있는 이진수이므로 2의 보수 표현으로 1100 0011
<<왼쪽 시프트 연산자 — 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 왼쪽으로 이동시킵니다.A << 2 = 240, 즉 1111 0000
>>오른쪽 시프트 연산자 — 왼쪽 피연산자의 값을 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동시킵니다.A >> 2 = 15, 즉 0000 1111

아래 예제는 C#에서 비트 연산자를 실제로 사용하는 방법을 보여줍니다. 변수 a는 60(0011 1100), 변수 b는 13(0000 1101)으로 초기화한 뒤 각 연산자를 적용합니다.

예제 코드

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 & b; /* 12 = 0000 1100 */
         Console.WriteLine("c의 값은 {0}", c );
         c = a | b; /* 61 = 0011 1101 */
         Console.WriteLine("c의 값은 {0}", c);
         c = a ^ b; /* 49 = 0011 0001 */
         Console.WriteLine("c의 값은 {0}", c);
         c = ~a; /* -61 = 1100 0011 */
         Console.WriteLine("c의 값은 {0}", c);
         c = a << 2; /* 240 = 1111 0000 */
         Console.WriteLine("c의 값은 {0}", c);
         c = a >> 2; /* 15 = 0000 1111 */
         Console.WriteLine("c의 값은 {0}", c);
         Console.ReadLine();
      }
   }
}

실행 결과

c의 값은 12
c의 값은 61
c의 값은 49
c의 값은 -61
c의 값은 240
c의 값은 15

핵심 정리

위 실행 결과에서 알 수 있듯이, AND(&)는 공통 비트만 남기고, OR(|)는 비트를 합치며, XOR(^)은 서로 다른 비트만 추출합니다. NOT(~)은 비트를 반전하여 음수가 되고, 시프트 연산(<<, >>)은 각각 2의 거듭제곱 배 곱셈·나눗셈과 같은 효과를 냅니다. 예를 들어 a << 2는 60 × 4 = 240이 되고, a >> 2는 60 ÷ 4 = 15가 되는 것입니다.