Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C ++ bitset ข้อเท็จจริงที่น่าสนใจ?


ภาษาการเขียนโปรแกรม 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

มีการดำเนินการอื่น ๆ อีกมากมายที่ทำบนบิตเซ็ต นอกจากนี้ยังมีตัวดำเนินการบิตบางตัวที่สามารถใช้ได้ เหล่านี้เป็นฟังก์ชันพื้นฐานและคุณสมบัติของบิตเซ็ตที่กล่าวถึงที่นี่