Kim Seogyu
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

Comments

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

© 2026 Seogyu Kim