sayu.day
Research

비트 연산 활용

비트 연산자의 의미와 비트마스크 실전 패턴을 예제로 정리합니다.

Published 2025년 12월 27일2 min read338 words

비트 연산 활용

연산자 요약

연산자의미예시 (a=10, b=6)
&둘 다 1이면 1 (AND)10 & 6 = 2
``하나라도 1이면 1 (OR)
^다르면 1 (XOR)10 ^ 6 = 12
~비트 반전 (NOT)~10 = -11 (2의 보수)
<<왼쪽 시프트10 << 1 = 20
>>부호 유지 오른쪽 시프트10 >> 1 = 5
>>>0 채움 오른쪽 시프트-1 >>> 1 = 2147483647 (JS)

비트마스크 기본 패턴

아래 예시는 정수 mask가 집합 역할을 한다는 가정입니다.

i번째 원소 존재 확인

const exists = (mask & (1 << i)) !== 0;

i번째 원소 추가

mask = mask | (1 << i);

i번째 원소 제거

mask = mask & ~(1 << i);

i번째 원소 토글

mask = mask ^ (1 << i);

공집합/전체집합

const empty = 0;
const full = (1 << n) - 1; // n개 원소를 모두 포함

최하위 1비트 추출

const lowestBit = mask & -mask;

최하위 1비트 제거

mask = mask & (mask - 1);

부분집합 순회

for (int sub = setMask; ; sub = (sub - 1) & setMask) {
  // sub 사용
  if (sub == 0) break;
}

실무에서 자주 쓰는 지점

  • 권한 플래그 관리 (READ, WRITE, ADMIN)를 비트 단위로 저장.
  • 그래프/DP 문제에서 부분집합 상태 압축.
  • 네트워크/프로토콜 파싱 시 헤더 플래그 추출.

주의사항

  • 언어별 정수 비트폭(int32, int64)이 다르면 결과가 달라질 수 있음.
  • 음수와 >>, >>> 동작 차이를 반드시 확인해야 함.
  • 가독성이 급격히 떨어질 수 있으므로 상수 이름을 강제하는 것이 안전함.

요약

비트 연산은 빠르지만, 성능보다 중요한 것은 "의도 명확성"입니다. 매직 넘버 대신 상수와 헬퍼 함수를 써서 유지보수성을 확보하는 것이 실무 기준입니다.

Share

Related Articles

이 블로그는 학습한 내용을 기록하는 공간입니다.
직접 작성한 글도 있고, AI의 도움을 받아 정리한 글도 있습니다.
정확하지 않은 내용이 있을 수 있으니 참고용으로 봐주세요.

© 2026 sayu.day