자료구조&알고리즘/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이면 불이 켜진다!"