logo

C++ bit kümesi ilginç gerçekler

Bit kümesi bit düzeyindeki verilerle ilgilenmek için C++ Standart Şablon Kitaplığı'ndaki bir kapsayıcıdır. 

1. Bir bit kümesi, bitleri (yalnızca iki olası değeri olan öğeler: 0 veya 1) saklar. Bununla birlikte, bitset yapıcısına konumlar sağlayarak bir dizgenin bir kısmını elde edebiliriz (Konumlar, soldan sağa dize konumuna göredir)



java dizesini biçimlendir

Örnek:

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; }  

Çıkış:

00110010 00000010 00000001

2. std::basic_string _str'deki karakterleri kullanarak bir bit kümesi oluşturabiliriz. İsteğe bağlı bir başlangıç ​​konumu _pos ve uzunluk n'nin yanı sıra ayarlanmış (_one) ve ayarlanmamış (_zero) bitler için alternatif değerleri belirten karakterler de sağlanabilir. 



Sözdizimi:

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 
  • Eğer _pos > str.size() ise bu yapıcı std::out_of_range değerini atar.
  • _str'de incelenen herhangi bir karakter sıfır veya bir değilse std::invalid_argument değerini atar.
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';  }  

Çıkış:

01001101

3. Sıfırlardan ve birlerden oluşan c tarzı bir karakter dizisinde sağlanan karakterlere karşılık gelen değerlere N bitleri başlatan sınıf bit kümesinin bir nesnesini oluşturur. Dizeyi bir dize türüne dönüştürmeden yapıcıyı çağırırsınız. Ayrıca, _Str'deki hangi karakterin sırasıyla 0 bit ve 1 bit olarak yorumlanacağını gösteren iki isteğe bağlı parametresi vardır: _Zero ve _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'; } 

Çıkış:

00001111

Bit Kümesi İşlemleri

1. std::bitset::to_string()  
Bit kümesinin içeriğini dizeye dönüştürür. False değerine sahip bitleri temsil etmek için sıfırı, true değerine sahip bitleri temsil etmek için ise birini kullanır. Ortaya çıkan dize, ilk karakterin son (N-1'inci) bit'e ve son karakterin de ilk bit'e karşılık geldiği N karakter içerir. Ayrıca true ve false değerlerini yazdırmak için kullanılan karakterleri de parametreler aracılığıyla geçirebiliriz.

Örnek:

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'; } 

Çıkış:

00101010 **1*1*1* OOXOXOXO

2. stz::bitt.  
Bit kümesinin içeriğini işaretsiz uzun bir tamsayıya dönüştürür. Bit setinin ilk biti sayının en az anlamlı basamağına, son biti ise en anlamlı basamağa karşılık gelir. Değer unsigned long ile temsil edilemiyorsa işlev std::overflow_error değerini atar.

Örnek:

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';  } 

Çıkış:

5