Post List

2015년 2월 4일 수요일

bitset : Bit(비트) 단위로 저장 및 조작

bitset

Bit(비트) 단위로 Data를 저장하고 조작 할 수 있는 class이다.
(하지만 실제로 Bit 단위로 메모리를 사용하는 것은 아니다.)

사용하기 위해서는 bitset를 include 해 줘야 한다.

#include <bitset>

선언은

std::bitset<5> B;

bitset<Bit수> 로 선언을 하면 된다. (크기는 Compile time에 정해져야 한다. run time에 결정을 해서 정하지 못하는게 좀 아쉽다.)

배표적인 멤버함수는 다음과 같다.

bool bitset<N>::any() : 어떤거라도 켜져 있으면 true, 아니면 false 
bool bitset<N>::test(i) : i번째 값을 return
bitset<N> &bitset<N>::set(i,b) : i번째 값을 b로 설정한다. b는 적어주지 않으면 default 가 1이다.
bitset<N> &bitset<N>::reset(i) : i번째 값을 0으로 설정한다.
size_t bitset<N>::count() : 1의 갯수를 return 한다.

간단히 아래 예제만으로 모든 사용법을 다 익힐수 있다.

#include <iostream>
#include <bitset>

void main()
{
std::bitset<5> B;  // 00000

B.set(0);          // 00001
B.set(1);          // 00011
B.set(3);          // 01011

std::cout << B << std::endl; // 01011

bool b1 = B.any();   // true
bool b2 = B.test(2); // false

B.reset(3);         // 00011

std::cout << B << std::endl; // 00011
size_t s = B.count(); // 2
}