bitset::flip()은 C++ STL(표준 템플릿 라이브러리)의 bitset 컨테이너에 내장된 멤버 함수로, 호출된 비트셋의 비트를 반전시키는 기능을 합니다.
이 함수는 매개변수를 전달하지 않으면 비트셋의 모든 비트를 한 번에 반전시켜 0을 1로, 1을 0으로 바꿉니다. 반면 정수형 위치 값(n)을 매개변수로 전달하면 n번째 비트 하나만 반전합니다. 예를 들어 flip(5)를 호출하면 5번째 비트만 뒤집힙니다. 이때 비트 위치는 오른쪽(LSB)부터 0으로 시작한다는 점에 유의해야 합니다.
문법(Syntax)
bitset_name.flip(int pos)
동작 예시
초기 비트셋: 011001 매개변수 없이 flip() 적용 후: 100110 flip(0) 적용 후: 011000
예제 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
bitset<6> bit1(string("100110"));
bitset<10> bit2(string("0100001111"));
cout << bit1 << " 에 매개변수 없이 flip()을 적용하면 → "
<< bit1.flip() << endl;
cout << bit2 << " 에 flip(7)을 적용하면 → "
<< bit2.flip(7);
return 0;
}
실행 결과
100110 에 매개변수 없이 flip()을 적용하면 → 011001 0100001111 에 flip(7)을 적용하면 → 1100001111
핵심 포인트 정리
- flip()은 매개변수 없이 호출하면 비트셋의 모든 비트를 반전합니다.
- 정수 n을 전달하면 n번째 비트(오른쪽부터 0으로 시작)만 반전합니다.
- flip()은 자기 자신에 대한 참조(*this)를 반환하므로 함수 체이닝이 가능합니다.
- 전달한 위치 값이 비트셋 크기보다 크거나 같으면
std::out_of_range예외가 발생합니다.