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은 고정 크기의 비트 배열을 다루는 표준 도구예요. 플래그 관리, 마스크 연산, 비트 파싱에 유용해요.

더 알아보기 (Learn more)

cppreference