C++ Practice

Bitset Library

Srff5123 2024. 11. 2. 12:46
728x90

1. Bitset

 

bitset은 0 또는 1, true 또는 false의 값을 갖도록 필요한 경우 사용하며,

비트 배열을 관리할 수 있도록 제공하는 라이브러리이다.

 

각 비트를 개별적으로 관리하고 조작할 수 있으며, 이진 데이터를 효율적으로 다룰 때 유용하다.

비트 연산과 메모리 효율적인 비트저장이 필요한 경우에 많이 사용한다.

 

2. 주요 특징

1. 고정된 크기 : bitset은 크기가 고정된 비트 배열을 제공한다. 크기는 템플릿의 인자로 지정

2. 비트 연산 지원 : bitset은 비트 단위의 논리연산(AND, OR , NOT, XOR 등)을 지원한다.

3. 비트 접근 및 조작 : 각 비트에 대해 접근하거나 개별적으로 조작할 수 있다.

4. 문자열 반환 : 비트의 값을 문자열로 쉽게 변환할 수 있다.

 

3. bitset의 선언 및 초기화

std::bitset<8> bits1;   8비트 크기의 bitset 선언

std::bitset<8> bits2(42); 42의 이진수 00101010

std::bitset<8> bits3("1101"); 오른쪽부터 채워져서 0001101로 초기화

 

4. 주요 멤버 함수

예시 : bitset<8> bits("10101010");

 

- set() : 모든 비트를 1로 설정하거나 특정 비트만 1로 설정할 수 있다.

bit.set(2);   인덱스 2번째 비트를 1로 설정 -> 01010101

 

- reset() : 모든 비트를 0으로 설정하거나 특정 비트만 0으로 설정

- flip() : 모든 비트를 반전하거나 특정 비트만 반전할 수 있음

- count() : 1로 설정된 비트의 개수를 반환

- test() : 특정 비트가 1인지 확인

- to_string() : 비트를 문자열로 변환하여 반환

 

- all() : 비트셋에서 모든 비트가 1일 경우 true 아니면 false

- any() : 비트셋에 비트가 1인것이 하나라도 존재한다면 true 아니면 false

- none() : 비트셋에 비트가 1인것이 하나라도 존재하지 않는다면 true 아니면 false

 

bitset은 정적이고 크기가 고정된 비트배열을 다루는 데 적합하며, 크기를 런타인에 동적으로 변경할 수 없다.

런타임 크기 조절이 필요할경우에는 vector<bool>이 대안이 될 수 있다.

728x90