logo

حقائق مثيرة للاهتمام عن مجموعة بتات C++

مجموعة البت عبارة عن حاوية في مكتبة النماذج القياسية C++ للتعامل مع البيانات على مستوى البت. 

1. تقوم مجموعة البت بتخزين البتات (عناصر ذات قيمتين محتملتين فقط: 0 أو 1). ومع ذلك، يمكننا الحصول على جزء من السلسلة من خلال توفير المواضع لمنشئ مجموعة البتات (المواضع تتعلق بموضع السلسلة من اليسار إلى اليمين)



arraylist.sort

مثال:

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) وبتات غير محددة (_صفر). 



بناء الجملة:

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 ليست صفرًا أو واحدًا، فسيتم طرح 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 إلى القيم التي تتوافق مع الأحرف المتوفرة في سلسلة أحرف على النمط c مكونة من الأصفار والواحدات. يمكنك استدعاء المنشئ دون تحويل السلسلة إلى نوع سلسلة. يحتوي أيضًا على معلمتين اختياريتين _Zero و_One والتي تشير إلى الحرف الموجود في _Str الذي سيتم تفسيره على أنه يعني 0 بت و1 بت على التوالي.



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 وواحد لتمثيل البتات بقيمة true. تحتوي السلسلة الناتجة على أحرف N حيث يتوافق الحرف الأول مع البتة الأخيرة (N-1) والحرف الأخير يتوافق مع البتة الأولى. كما يمكننا تمرير الأحرف المستخدمة لطباعة قيمة الصواب والخطأ من خلال المعلمات.

مثال:

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::bitt.  
يحول محتويات مجموعة البت إلى عدد صحيح طويل غير موقّع. يتوافق البت الأول من مجموعة البت مع الرقم الأقل أهمية من الرقم ويتوافق البت الأخير مع الرقم الأكثر أهمية. تطرح الدالة 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