반응형
- 비트셋(Bitset)이란?
원하는 비트 몇 개를 쓰기 위한 bitset STL이다.
이때 0이면 채워지지 않은 것, 1이면 채워진 것이다.
비트 연산을 잘 이해하고 있을 때 비트셋까지 알고 있다면 비트에 관한 내용을 쉽게 다룰 수 있다.
- 비트셋(Bitset)이용 방법 및 함수
#include <bitset>를 이용
bitset<개수> 이름; :: bitset 선언
bit.set() :: 전체 비트를 1로 셋팅
bit.set(n, true/false) :: n+1번째 비트를 1또는 0으로 셋팅
bit.reset() :: 전체 비트를 0으로 리셋
bit.size() :: bitset의 크기를 구한다.
bit.any() :: 비트셋 중 하나라도 1이면 1을 반환, 모두 0일때만 0을 반환
bit.none() :: 비트셋 중 모두가 0이어야 1을 반환
bit.flip() :: 전체 비트를 반전
bit.flip(n) :: n+1번째 비트를 반전
bit.test(n) :: n+1번째 비트를 검사(1인지 0인지)
bit.to_string() :: 전체 비트를 string화 시킨다.
bit.to_ulong() / bit.to_ullong() :: 전체 비트를 unsigned long / unsigned long long 의 값으로 바꿔준다.
bit.test[4] == bit[4] :: 배열처럼 이용이 가능하다.
간단한 문제를 풀어보려면
http://www.crocus.co.kr/550 를 참조하면 된다.
- 소스 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #include <bitset> #include <string> #include <iostream> using namespace std; int main() { // bitset을 선언, 총 10개의 비트를 의미한다. bitset<10> bit; // 전체 비트를 0으로 리셋한다. bit.reset(); cout << "bit.reset() :: " << bit << endl; // 전체 비트를 1로 셋팅한다. bit.set(); cout << "bit.set() :: " << bit << endl; // 비트셋으로 선언한 bit의 할당된 수를 구한다 int size = (int)bit.size(); cout << "bit.size() :: " << size << endl ; // 비트셋중 하나라도 1이면 1을 반환, 모두 0이면 0을 반환한다. // 현재는 bit.set()로 인해 모두 1이다. cout << "bit.any() :: " << bit.any() << endl; // 0으로 리셋 bit.reset(); cout << "bit.reset() :: " << bit.reset() << endl; // 현재는 0으로 모두 리셋이 되었으니 0이 출력된다. cout << "bit.any() :: " << bit.any() << endl; // 4번째 비트 반전 bit.flip(3); // 하나라도 1이면 bit.any()는 1이되니 bit.none()는 0이된다. cout << "bit.none() :: " << bit.none() << endl << endl; // 현재 비트 구성 확인 cout << "bit state :: " << bit << endl; // 첫번째 비트는 true, 네번째 비트는 false 할당 bit.set(0, true); bit.set(3, false); cout << "bit.set(0, true), bit.set(3, false); " << bit << endl; // 첫번째 비트 검사 cout << "bit.test(0) :: " << bit.test(0) << endl; // 다섯번째 비트 검사(배열형식으로도 가능하다.) cout << "bit[4] :: " << bit[4] << endl; // 현재 비트 출력 cout << "bit state :: " << bit << endl; // 모든 비트 반전 cout << "bit.flip() :: " << bit.flip() << endl << endl; // 비트를 string으로 변환 string str = bit.to_string(); cout << "bit.to_string() :: " << str << endl; // string에 제대로 들어가는지 확인 str += "crocus"; cout << "str += \"crocus\" :: " << str << endl; // 비트를 숫자로 변환 cout << "bit.to_ulong() :: " << bit.to_ulong() << endl; return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 자료구조' 카테고리의 다른 글
비트 연산자 및 비트 연산 응용 방법 (0) | 2017.02.11 |
---|---|
배열을 이용한 이진 트리(Binary Tree) (0) | 2016.11.24 |
스트링(String) STL 사용 방법 (0) | 2016.11.03 |
벡터(Vector) STL 사용 방법 (2) (0) | 2016.11.03 |
벡터(Vector) STL 사용 방법 (1) (2) | 2016.11.03 |