ภาษาการเขียนโปรแกรม C++ กำหนดคอนเทนเนอร์ในไลบรารีเทมเพลตมาตรฐาน c++ ที่ชื่อว่าบิตเซ็ต คอนเทนเนอร์บิตเซ็ตนี้ใช้เพื่อทำงานกับองค์ประกอบในระดับบิต เช่น แต่ละบิตของตัวแปรคือบิต เช่น การแปลงไบนารีของค่าที่กำหนด
1. Bitset ก็เหมือนสตริง − Bitset คือคอนเทนเนอร์ของบิต ( มีเพียง 0 และ 1 เท่านั้นที่ถูกต้อง ). คุณสามารถสร้างบิตเซ็ตด้วยชุดของบิตใดๆ ที่ระบุโดยค่าดัชนีเริ่มต้นของบิตเซ็ตและจำนวนองค์ประกอบที่พิจารณา นั่นคือ คุณสามารถสร้างบิตเซ็ตที่มี 2 องค์ประกอบเริ่มต้นจากดัชนี 1 ของบิตเซ็ตและต่อท้ายบิตเซ็ต บิตเซ็ต
ตัวอย่าง - เราจำเป็นต้องวางองค์ประกอบ 4 รายการโดยเริ่มจากค่าดัชนี 2 ของสตริงบิต 01001110 ชุดบิตนี้จะนำองค์ประกอบ 0011 ซึ่งจะต่อท้ายบิตเซ็ต ดังนั้น ค่าของบิตเซ็ต 8 บิตที่กำหนดโดยวิธีนี้คือ 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) ;
นี่คือคอนสตรัคเตอร์ที่กำหนดเพื่อสร้างบิตเซ็ต มาเจาะลึกลงไปในตัวสร้างและเรียนรู้ว่าแต่ละพารามิเตอร์ของตัวสร้างสื่อถึงอะไร
str − สตริงที่จะนำมาพิจารณาสำหรับการสร้างบิตเซ็ต
ออฟเซ็ต − ดัชนีสตริงของสตริง
ขนาด − ขนาดของบิตเซ็ตที่จะสร้าง
ค่าศูนย์ − ค่าของสตริงที่จะถือว่าเป็น 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. แปลงบิตเซ็ตเป็นสตริง − ในบิตเซ็ต มีฟังก์ชันในการแปลงบิตเซ็ตเป็นสตริง ฟังก์ชัน to_string() ใช้เพื่อเก็บค่าของบิตเซ็ตลงในสตริง ความยาวของสตริงเท่ากับความยาวของบิตเซ็ต
ลำดับการจัดเก็บองค์ประกอบของบิตที่ตั้งไว้ในสตริงจะเหมือนกับลำดับบิตเซ็ต นั่นคือองค์ประกอบแรกขององค์ประกอบแรกของบิตเซ็ตของสตริง
การแปลงสตริงของ 01010100 คือ “01010100”
คุณสามารถแทนที่ 0 และ 1 ด้วยตัวอักษรใดก็ได้โดยระบุในรายการพารามิเตอร์ของวิธีการ มันเป็นเพียงสิ่งที่ตรงกันข้ามกับสิ่งที่เราเรียนรู้ในขณะที่สร้างบิตเซ็ต
ตัวอย่าง
#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
มีการดำเนินการอื่น ๆ อีกมากมายที่ทำบนบิตเซ็ต นอกจากนี้ยังมีตัวดำเนินการบิตบางตัวที่สามารถใช้ได้ เหล่านี้เป็นฟังก์ชันพื้นฐานและคุณสมบัติของบิตเซ็ตที่กล่าวถึงที่นี่