원리 · intermediate

비트 연산 기초: AND OR XOR · 플래그

정수 비트를 켜고 끄고 토글하는 패턴과 코딩 테스트에서의 쓰임.

배우기 · 알고리즘 원리 · 16분 · 13/14 · 비트 · 정수

이 트랙 목차 (14)
  1. 1. 시간·공간 복잡도 (Big-O) 제대로 읽기
  2. 2. 투포인터: 양끝·같은방향
  3. 3. 해시맵·해시셋: 빠른 조회
  4. 4. 스택·큐: LIFO와 FIFO
  5. 5. 재귀와 이분 탐색
  6. 6. 슬라이딩 윈도우
  7. 7. 동적 계획법 입문 (DP)
  8. 8. 누적합·차분 배열
  9. 9. 그래프 탐색: BFS·DFS
  10. 10. 정렬을 언제 쓰나: 전처리·이분·그리디
  11. 11. 그리디: 탐욕 선택과 반례
  12. 12. 행렬·격자: 인덱싱과 방문
  13. 13. 비트 연산 기초: AND OR XOR · 플래그
  14. 14. 우선순위 큐·힙 감각

기본 연산

연산의미
a & b둘 다 1인 비트
`a \b`하나라도 1
a ^ b다르면 1 (XOR)
~a비트 반전 (언어별 폭 주의)
a << k왼쪽으로 k비트 (×2^k 감각)
a >> k오른쪽 시프트

JS는 비트 연산 전 32비트 정수로 취급하는 경우가 많습니다. 큰 정수·부호에 주의하세요.

플래그 패턴

const ON = 1 << 0;
const VIP = 1 << 1;
let flags = 0;
flags |= ON;       // 켜기
flags &= ~ON;      // 끄기
flags ^= VIP;      // 토글
(flags & VIP) !== 0; // 검사

집합을 비트마스크로 표현하면 n≤20 완전탐색(부분집함)에 쓰입니다.

자주 쓰는 트릭

XOR로 “짝수 번 나온 것 제외 하나 찾기”도 전형입니다.

언제 쓰나

일반 배열·해시로 충분한 문제에서는 무리해서 쓰지 마세요.

체크리스트

  1. 언어의 정수 폭·부호를 아는가?
  2. 마스크 상수에 이름을 달았는가?
  3. 시프트 횟수가 폭을 넘지 않는가?

연습

0..n-1 비트를 켜서 부분집합을 순회하는 이중 루프 스케치를 의사코드로 적어 보세요.

한 줄

> 비트는 작은 집합·플래그용. 가독성이 떨어지면 배열로.

관련 태그 문제로 바로 연습해 두면 읽기가 남습니다.

손계산

5101, 3011.
5 & 3 = 001 (1), 5 | 3 = 111 (7), 5 ^ 3 = 110 (6).

한 줄로 그려 보고 코드와 맞춰 보세요.

관련 짧은 원리

관련 문제