مجموعة البت عبارة عن حاوية في مكتبة النماذج القياسية 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++ 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