Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ bitset 흥미로운 사실?

<시간/>

C++ 프로그래밍 언어는 bitset이라는 C++ 표준 템플릿 라이브러리의 컨테이너를 정의합니다. 이 bitset 컨테이너는 비트 수준에서 요소, 즉 변수의 각 비트, 즉 주어진 값의 이진 변환에 대해 작업하는 데 사용됩니다.

1. Bitset은 문자열과 같습니다. − Bitset은 비트의 컨테이너입니다( 0과 1만 유효 ). 비트 집합의 시작 인덱스 값과 고려되는 요소 수로 지정된 비트 집합을 사용하여 비트 집합을 만들 수 있습니다. 비트셋.

예 - 비트 문자열 01001110의 인덱스 값 2에서 시작하는 4개의 요소가 필요합니다. 이 비트세트는 0011 요소를 사용합니다. bitset의 끝에 추가됩니다. 따라서 이 방법으로 정의된 8비트 bitset의 값은 00000011입니다. .

예시

#include <bitset>
#include <string>
#include <iostream>
int main() {
   std::string bit_string = "10010110";
   std::bitset<8> b1(bit_string, 1 , 4);
   std::cout << b1 << '\n' ;
   return 0;
}

출력

00000010

2. 문자열에서 Bitset 구성 − 생성하는 동안 사용되는 두 가지 유형의 값만 있는 문자열이 있는 경우. 이 문자열을 각각의 0/1 표현으로 값을 고려하는 비트 집합으로 변환할 수 있습니다.

이 개념을 더 잘 이해하기 위해 예를 들어 보겠습니다.

우리는 'xyxxyyx'라는 문자열을 가지고 있습니다. 여기서 x =0 및 y=1을 고려하여 배열과 동일한 길이의 비트세트를 생성할 수 있습니다. 비트세트는 0100110으로 생성됩니다. .

이 작업을 수행하기 위해 라이브러리에 정의된 생성자가 있습니다 -

bitset(str, offSet, size, zeroVal , oneVal) ;

이것은 비트 집합을 만들기 위해 정의된 생성자입니다. 생성자를 자세히 살펴보고 생성자의 각 매개변수가 전달하는 내용을 알아보겠습니다.

문자열 - bitset 생성을 위해 고려할 문자열입니다.

오프셋 - 문자열의 문자열 인덱스.

크기 − 생성될 bitset의 크기입니다.

zeroVal − 0으로 간주될 문자열의 값

oneVal − 1로 간주될 문자열의 값]

예시

#include <bitset>
#include <string>
#include <iostream>
using namespace std;
int main() {
   string bitstr = "xyxxyyyx";
   bitset<8> bits(bitstr, 0, bitstr.size(), 'x', 'y');
   cout <<"The bitset is : "<< bits << '\n';
}

출력

The bitset is: 01001110

3. bitset을 문자열로 변환 − bitset에는 bitset을 문자열로 변환하는 기능이 있습니다. to_string() 함수 비트 집합의 값을 문자열에 저장하는 데 사용됩니다. 문자열의 길이는 bitset의 길이와 같습니다.

비트 집합의 요소를 문자열에 저장하는 순서는 비트 집합 순서와 동일합니다. 즉, 비트 집합의 첫 번째 요소는 문자열의 첫 번째 요소입니다.

01010100의 문자열 변환 "01010100"입니다.

메소드의 매개변수 목록에 지정하여 0과 1을 임의의 문자로 바꿀 수 있습니다. bitset을 구성하는 동안 배운 것과 반대입니다.

예시

#include <iostream>
#include <bitset>
using namespace std;
int main() {
   bitset<8> b(19);
   cout<<"The value of the bitset is : "<<b<<endl;
   cout<<"The string conversion of the bitset is : "<<b.to_string()<<endl;
   cout<<"The string conversion by replacing 0 with T and 1 with P is : ";
   cout<< b.to_string('T', 'P')<<endl;
}

출력

The value of bitset is : 00010011
The string conversion of bitset is : 00010011
string conversion by replacing 0 with T and 1 with P is : TTTPTTPP

bitset에서 수행되는 다른 많은 작업이 있습니다. 또한 사용할 수 있는 일부 비트 연산자도 있습니다. 여기에서 설명하는 bitset의 기본 기능과 속성입니다.