logo

C++ 비트셋 흥미로운 사실

비트셋 비트 수준에서 데이터를 처리하기 위한 C++ 표준 템플릿 라이브러리의 컨테이너입니다. 

1. bitset은 비트(0 또는 1의 두 가지 값만 가능한 요소)를 저장합니다. 그러나 비트세트 생성자에 위치를 제공하여 문자열의 일부를 얻을 수 있습니다(위치는 문자열 위치를 기준으로 왼쪽에서 오른쪽으로 지정됩니다).



안드로이드에서 구글 계정 로그아웃

예:

C++
// C++ program to demonstrate that we can get part of a  // bit string in bitset. #include    #include  #include    int main() {  std::string bit_string = '110010';  std::bitset<8> b1(bit_string); // [0 0 1 1 0 0 1 0]  // string from position 2 till end  std::bitset<8> b2(bit_string 2); // [0 0 0 0 0 0 1 0]  // string from position 2 till next 3 positions  std::bitset<8> b3(bit_string 2 3); // [0 0 0 0 0 0 0 1]    std::cout << b1 << 'n' << b2 << 'n' << b3 << 'n';  return 0; }  

산출:

00110010 00000010 00000001

2. std::basic_string _str의 문자를 사용하여 비트세트를 구성할 수 있습니다. 선택적 시작 위치 _pos 및 길이 _n은 물론 설정(_one) 및 설정 해제(_zero) 비트에 대한 대체 값을 나타내는 문자도 제공될 수 있습니다. 



통사론:

std::bitset b1(str pos n zero one);   str   : string used to initialize the bitset   pos   : a starting offset into str   n   : number of characters to use from str   zero   : alternate character for unset bits in str   one   : alternate characters for set bits in str 
  • _pos > str.size()인 경우 이 생성자는 std::out_of_range를 발생시킵니다.
  • _str에서 검사된 문자가 0이나 1이 아닌 경우 std::invalid_argument가 발생합니다.
C++
// C++ program to demonstrate that we can construct bitset using  // alternate characters for set and unset bits.  #include     #include   #include     int main()  {   // string constructor using custom zero/one digits   std::string alpha_bit_string = 'aBaaBBaB';   std::bitset<8> b1(alpha_bit_string 0 alpha_bit_string.size()   'a' 'B'); // [01001101]   std::cout << b1 << 'n';  }  

산출:

01001101

3. N 비트를 0과 1의 C 스타일 문자열에 제공된 문자에 해당하는 값으로 초기화하는 bitset 클래스의 개체를 생성합니다. 문자열을 문자열 유형으로 캐스팅하지 않고 생성자를 호출합니다. 또한 _Str의 어떤 문자가 각각 0비트와 1비트를 의미하도록 해석되는지를 나타내는 두 개의 선택적 매개변수 _Zero 및 _One도 있습니다.



C++
#include    #include    int main()  {  // char* constructor using custom digits  std::bitset<8> b1('XXXXYYYY' 8 'X' 'Y'); // [0 0 0 0 1 1 1 1]  std::cout << b1 << 'n'; } 

산출:

00001111

비트세트 작업

1. std::bitset::to_string()  
비트 세트의 내용을 문자열로 변환합니다. false 값을 가진 비트를 나타내려면 0을 사용하고 true 값을 가진 비트를 나타내려면 1을 사용합니다. 결과 문자열에는 첫 번째 문자가 마지막(N-1번째) 비트에 해당하고 마지막 문자가 첫 번째 비트에 해당하는 N 문자가 포함됩니다. 또한 매개변수를 통해 true 및 false 값을 인쇄하는 데 사용되는 문자를 전달할 수 있습니다.

예:

C++
// C++ program to demonstrate that we can convert contents // of bitset to a string. #include    #include    int main() {  std::bitset<8> b(42);  std::cout << b.to_string() << 'n'  << b.to_string('*') << 'n'  << b.to_string('O' 'X') << 'n'; } 

산출:

00101010 **1*1*1* OOXOXOXO

2. stz::비트.  
비트 세트의 내용을 부호 없는 긴 정수로 변환합니다. 비트 세트의 첫 번째 비트는 숫자의 최하위 숫자에 해당하고 마지막 비트는 최상위 숫자에 해당합니다. 값을 unsigned long으로 표현할 수 없으면 함수는 std::overflow_error를 발생시킵니다.

예:

C++
// C++ program to demonstrate that we can get value of bitset // as unsigned long integer. #include    #include      int main() {  std::bitset<5> b(5);  std::cout << b.to_ulong() << 'n';  } 

산출:

5