둘 다 1일 때만 1, 나머지는 0
A & B
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
하나라도 1이면 1이 된다!
A | B
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
📌 비트 AND (&) 연산
1001 (9)
& 1000 (8)
------------
1000 (8)
➡ 9 & 8 = 8
📌 비트 OR (|) 연산
1001 (9)
| 1000 (8)
------------
1001 (9)
➡ 9 | 8 = 9
두 비트가 모두 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) 만 남음!
하나라도 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이면 불이 켜진다!"
비트 연산자 ^ (XOR), << (왼쪽 시프트), >> (오른쪽 시프트) (0) | 2025.03.05 |
---|---|
🔍 ~ (비트 NOT) vs ^ (비트 XOR) 연산 차이점 (0) | 2025.03.05 |
비트 마스킹 (0) | 2025.03.05 |
📌 완전 탐색(Brute Force)과 원복(Backtracking)의 차이점 (0) | 2025.03.04 |
🚀 재귀를 활용한 완전 탐색 vs 백트래킹 비교! (0) | 2025.03.04 |