bitset — std::bitset
bitset — std::bitset
std::bitset 클래스 템플릿은 N개의 비트로 이루어진 고정 크기 시퀀스를 나타내요. <bitset> 헤더에 있어요.
비트셋은 표준 논리 연산자로 조작되고, 문자열·정수로 변환될 수 있어요.
출처: cppreference
본문
// <bitset> 헤더
template< std::size_t N >
class bitset;
생성
비트셋의 크기는 컴파일 타임 상수예요.
#include <bitset>
#include <string>
std::bitset<8> b1; // 모두 0
std::bitset<8> b2(0b10110); // 8비트 이진 표현 (값 22)
std::bitset<8> b3(std::string("101010")); // 문자열로
주요 연산
| 연산 | 설명 |
|---|---|
operator[] |
개별 비트 읽기/쓰기 |
count() |
1인 비트 수 |
size() |
비트 수 (N) |
test(i) |
i번째 비트 검사 (범위 검사) |
all(), any(), none() |
전체/일부/없음 |
set(), reset(), flip() |
설정/해제/반전 |
to_string(), to_ulong(), to_ullong() |
변환 |
논리 연산자
std::bitset<8> a("1100"), b("1010");
auto c = a & b; // 1000 (AND)
auto d = a | b; // 1110 (OR)
auto e = a ^ b; // 0110 (XOR)
auto f = ~a; // 0011 (반전)
사용 예
std::bitset<8> flags;
flags.set(3); // 3번 비트 켬 → 00001000
flags.set(7);
flags.flip(0); // 0번 비트 반전 → 00001001
std::cout << flags.count(); // 3 (켜진 비트 수)
std::cout << flags.to_string(); // "00001001"
특징
- 비트 단위 상태(플래그, 마스크)를 간결하게 표현·조작해요.
- 문자열·정수와의 변환 지원.
- 고정 크기라 동적 bitset이 필요하면
std::vector<bool>등을 써요.
// 비트 플래그 조합
std::bitset<4> perm;
perm.set(0).set(2); // 0101
std::bitset은 고정 크기의 비트 배열을 다루는 표준 도구예요. 플래그 관리, 마스크 연산, 비트 파싱에 유용해요.