자료구조&알고리즘/C++
비트 마스킹 : 비트 연산자
geminanolja
2025. 3. 5. 21:30
✅ 1️⃣ 비트 AND (&) 연산자 표
둘 다 1일 때만 1, 나머지는 0
A & B
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
✅ 2️⃣ 비트 OR (|) 연산자 표
하나라도 1이면 1이 된다!
A | B
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
✅ 3️⃣ 비트 연산 예제
📌 비트 AND (&) 연산
1001 (9)
& 1000 (8)
------------
1000 (8)
➡ 9 & 8 = 8
📌 비트 OR (|) 연산
1001 (9)
| 1000 (8)
------------
1001 (9)
➡ 9 | 8 = 9
✅ 1️⃣ 비트 AND (&) 연산자
두 비트가 모두 1일 때만 결과가 1이 됨!
하나라도 0이면 결과는 0이야.
📌 비트 AND 예제
#include <iostream>
using namespace std;
int main() {
int a = 5; // 5 = 0b0101
int b = 3; // 3 = 0b0011
int result = a & b; // 비트 AND 연산
cout << result << endl; // 결과: 1 (0b0001)
}
📌 비트 계산 과정
0101 (5)
& 0011 (3)
------------
0001 (1) ← **AND는 둘 다 1일 때만 1!**
✅ 즉, 5 & 3 = 1 (1비트만 살아남음!)
"손을 맞잡은 친구들만 살아남는 게임"
둘 다 1이면 살아남고, 하나라도 0이면 탈락!
예: 5(0101) & 3(0011) → 1(0001) 만 남음!
✅ 2️⃣ 비트 OR (|) 연산자
하나라도 1이면 결과가 1이 됨!
둘 다 0일 때만 결과가 0이야.
📌 비트 OR 예제
#include <iostream>
using namespace std;
int main() {
int a = 5; // 5 = 0b0101
int b = 3; // 3 = 0b0011
int result = a | b; // 비트 OR 연산
cout << result << endl; // 결과: 7 (0b0111)
}
📌 비트 계산 과정
0101 (5)
| 0011 (3)
------------
0111 (7) ← **OR는 하나라도 1이면 1!**
✅ 즉, 5 | 3 = 7 (모든 1이 살아남음!)
"불을 켜는 게임"
하나라도 1이면 불이 켜지고, 둘 다 0이면 불이 꺼짐!
예: 5(0101) | 3(0011) → 7(0111) 다 켜짐!
✅ 최종 정리
👦 비트 AND (&) → "같이 손잡은 친구들만 살아남는다!"
👧 비트 OR (|) → "불을 켜는 게임, 하나라도 1이면 불이 켜진다!"