비트 연산자란?
개념
- 비트 연산자는 비트(bit) 단위로 계산을 수행하는 연산자입니다.
- 보통 덧셈(+), 뺄셈(-)은 바이트 단위(8비트)로 연산하지만, 비트 연산자는 한 자리씩, 즉 0과 1 단위로 처리합니다.
장점
- 빠른 연산 속도
- 메모리 절약
- 하드웨어 제어, 암호화, 그래픽 처리 등에 자주 사용됩니다.
bit와 byte의 관계
- 1바이트 = 8비트
- 1비트는 0 또는 1 중 하나의 값을 가집니다.
- 비트 수가 많아질수록 표현할 수 있는 값의 범위가 커집니다.
비트 수표현 가능한 수 (부호 없음)표현 가능한 수 (부호 있음)
8비트 | 0 ~ 255 (총 256개) | -128 ~ 127 |
16비트 | 0 ~ 65535 | -32,768 ~ 32,767 |
예: 2^8 = 256 → 8비트는 총 256개의 값을 표현할 수 있습니다.
10진수 ↔ 2진수 변환 (예시)
10진수 5 → 2진수 00000101
10진수 9 → 2진수 00001001
각각 8비트 기준으로 표현한 것입니다.
주요 비트 연산자 종류와 의미
🔹 AND: &
- 두 비트가 모두 1일 때만 결과가 1
00000101 (5) 00001001 (9) --------- 00000001 → 1
🔹 OR: |
- 둘 중 하나라도 1이면 결과가 1
00000101 00001001 --------- 00001101 → 13
🔹 XOR: ^ (배타적 OR)
- 두 비트가 다르면 1, 같으면 0
00000101 00001001 --------- 00001100 → 12
🔹 NOT: ~ (단항 연산자)
- 0은 1로, 1은 0으로 바꿈 (반전)
- 예: ~5
5 → 00000101 ~5 → 11111010 → -6 (2의 보수로 계산)
참고: C언어에서는 정수는 2의 보수 방식으로 저장되기 때문에, ~5의 결과는 단순히 비트 반전된 수가 아니라 -6이 됩니다.
2진수 → 10진수 계산 방법
예: 0101 (2진수)
→ 각 자리의 가중치를 곱해서 더합니다.
plaintext
복사편집
0×2³ + 1×2² + 0×2¹ + 1×2⁰ = 0 + 4 + 0 + 1 = 5
연산자 분류
연산자이름항 수
& | AND | 이항 연산자 |
` | ` | OR |
^ | XOR | 이항 연산자 |
~ | NOT | 단항 연산자 |
정리 요약
- 비트 연산자는 연산 속도가 빠르고 메모리 절약에 유리합니다.
- AND, OR, XOR은 두 수의 각 비트를 비교하여 결과를 냅니다.
- NOT은 한 수의 비트를 반전시켜 새로운 값을 만듭니다.
- 실무에서는 하드웨어 제어, 비트 플래그 처리, 마스크 연산 등에 많이 사용됩니다.