Research

비트 연산 활용

2025-12-272 min read

비트 연산 활용

종류

비트 연산자설명
&대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산)
|대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산)
^대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산)
~비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수)
<<명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산)
>>부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산)
>>>지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됨.

종류 별 예시

비트마스크

연산 사용 예시
i번째 요소 조회하기
// 10 & (1 << 2)
// 1010 & 0100
// => 0000
// 결과값의 idx=3 요소는 i번째 요소의 존재여부를 나타낸다 
n & (1 << i);
변경(삽입)
// 10 | (1 << 2)
// 1010 | 0100
// => 1110
// 결과값의 idx=2 요소를 1로 만들었다
n | (1 << i)
삭제
// 15 & ~(1 << 2) 
// 1111 & ~0100
// 1111 & 1011
// => 1011
// 결과값의 idx=2 요소를 0으로 만들었다
n & ~(1 << i)
공집합
int result = 0;
꽉 찬 집합
// A개의 원소를 가진 집합의 종류
// 점화식으로는 (2**n) - 1
int result = ((1 << A) - 1);
최소 원소 찾기
int firstBit = b & -b;
최소 원소 지우기
int removed = origin & (origin-1);
부분 집합 순회
집합 A의 부분집합 순회
for (int i = A;; i = ((i - 1) & A)) {
    ...
}

참고 문서

Share

Related Articles

Comments

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

© 2026 Seogyu Kim