Bitset
비트를 다루는 STL
#include <bitset> 을 이용
bitset<비트개수> 변수명
bitset<비트개수> 변수명(초기값) 으로 bitset 선언. 초기값으로는 int, float, double, string 가능하다.
ex)
1 2 | bitset<8> b(100); bitset<8> b("100"); //이진수 100 | cs |
비트셋은 배열처럼 인덱스로 접근 가능 (위 비트셋 100에서 b[0] = 0, b[1] = 0, b[2] = 1)
멤버함수
test(인덱스): 인덱스의 비트가 1이면 true, 0이면 false 반환
set(): 전체 비트를 1로 설정
set(인덱스): 해당 인덱스의 비트를 1로 설정
set(인덱스, 비트): 해당 인덱스의 비트를 지정한 비트로 설정
reset(): 전체 비트를 0으로 설정
reset(인덱스): 해당 인덱스의 비트를 0으로 설정
flip(): 전체 비트를 반전( 0은 1로, 1은 0으로)
flip(인덱스): 해당 인덱스의 비트를 반전
all(): 모든 비트가 1인지 검사
any(): 비트 중 1이 1개 이상 있는지 검사
none(): 모든 비트가 0인지 검사
count(): 비트 중 1의 개수
size(): 비트셋의 크기 반환
(size() - count() : 비트 중 0의 개수)
to_string(): 전체 비트를 string으로 변환
to_ulong(): 전체 비트를 unsigned long으로 변환
to_ullong(): 전체 비트를 unsigned long long으로 변환
선언 예제 코드
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 | #include <bitset> #include <string> #include <iostream> using namespace std; int main(void) { bitset<8> b1; bitset<8> b2; bitset<8> b3; bitset<8> b4; int i1 = 100; float f1 = 21; double d1 = 11; string s1 = "11001"; b1 = bitset<8>(i1); //0110 0100 b2 = bitset<8>(f1); //0001 0101 b3 = bitset<8>(d1); //0000 1011 b4 = bitset<8>(s1); //0001 1001 cout << b1 << '\n'; cout << b2 << '\n'; cout << b3 << '\n'; cout << b4 << '\n'; return 0; } | cs |
'컴퓨터공학 > STL' 카테고리의 다른 글
[STL]C++ STL priority_queue (0) | 2018.07.19 |
---|---|
[STL]C++ STL queue (0) | 2018.07.19 |
[STL]C++ STL stack (0) | 2018.07.19 |
[STL] C++ STL tuple (0) | 2018.06.22 |
[STL] C++ STL pair (0) | 2018.06.22 |