Contents
접기
728x90
컴퓨터는 0과 1(비트) 로 모든 데이터를 처리한다.
비트 연산자는 이 0과 1을 직접 조작할 때 사용되며, 성능이 중요하거나 저수준 프로그래밍에서 많이 활용된다.
비트 연산자란?
비트 연산자는 정수를 2진수(0과 1)로 변환한 후 비트 단위로 연산하는 연산자이다.
예를 들어, 5(10진수) → 101(2진수) 이런 식으로 변환한 후 연산이 진행된다.
C# 비트 연산자 종류
연산자 | 의미 | 설명 |
& | AND | 둘 다 1일 때만 1 (나머지는 0) |
| | OR | 둘 다 0일 때만 0 |
^ | XOR | 다르면 1, 같으면 0 |
~ | NOT (보수) | 0은 1로, 1은 0으로 반전 |
<< | 왼쪽 시프트 | 비트를 왼쪽으로 이동 (곱하기 효과) |
>> | 오른쪽 시프트 | 비트를 오른쪽으로 이동 (나누기 효과) |
& (비트 AND)
둘 다 1일 때만 1이 됨
int a = 5; // 101 (2진수)
int b = 3; // 011 (2진수)
int result = a & b; // 001 (1)
Console.WriteLine(result); // 출력: 1
📌 5(101) & 3(011) = 001 (1)
| (비트 OR)
하나라도 1이면 1이 됨
int a = 5; // 101
int b = 3; // 011
int result = a | b; // 111 (7)
Console.WriteLine(result); // 출력: 7
📌 5(101) | 3(011) = 111 (7)
^ (비트 XOR)
비트가 다르면 1, 같으면 0
int a = 5; // 101
int b = 3; // 011
int result = a ^ b; // 110 (6)
Console.WriteLine(result); // 출력: 6
📌 5(101) ^ 3(011) = 110 (6)
~ (비트 NOT)
0을 1로, 1을 0으로 반전 (음수 값 주의!)
int a = 5; // 00000000 00000000 00000000 00000101 (32비트 기준)
int result = ~a;
Console.WriteLine(result); // 출력: -6
📌 ~5 = -(5 + 1) = -6 (C#은 음수 표현에 2의 보수 방식을 사용)
<< (왼쪽 시프트)
비트를 왼쪽으로 이동 → 2배 증가 효과
int a = 3; // 0011 (2진수)
int result = a << 2; // 1100 (12)
Console.WriteLine(result); // 출력: 12
📌 3(0011) << 2 → 1100(12)
>> (오른쪽 시프트)
비트를 오른쪽으로 이동 → 2로 나눈 효과
int a = 8; // 1000
int result = a >> 2; // 0010 (2)
Console.WriteLine(result); // 출력: 2
📌 8(1000) >> 2 → 0010(2)
728x90