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

ข้อเท็จจริงน่าสนใจเกี่ยวกับ C++ bitset


C++ มีคอนเทนเนอร์ใน STL ชื่อ bitset ใช้ทำงานกับข้อมูลระดับบิต (bit level) คือแต่ละบิตของตัวแปร (การแปลงเป็นเลขฐานสอง)

1. bitset เหมือนสตริง

bitset เป็นคอนเทนเนอร์ของบิต (มีแค่ 0 และ 1) สร้าง bitset ได้จากชุดบิตที่กำหนดโดยดัชนีเริ่มต้นและจำนวนสมาชิก

ตัวอย่าง: ต้องการ 4 บิตเริ่มจากดัชนี 2 ของสตริงบิต "01001110" จะได้ "0011" ต่อท้าย bitset 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 จากสตริง

ถ้ามีสตริงที่มีค่า 2 แบบ ใช้สร้าง bitset โดยแปลงค่าเหล่านั้นเป็น 0/1

ตัวอย่าง: สตริง "xyxxyyx" กำหนด x=0, y=1 → bitset "0100110"

Constructor: bitset(str, offSet, size, zeroVal, oneVal)

  • str — สตริงต้นทาง
  • offSet — ดัชนีเริ่มต้นในสตริง
  • size — ขนาด bitset ที่จะสร้าง
  • zeroVal — ตัวอักษรที่แทน 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. แปลง bitset เป็นสตริง

ฟังก์ชัน to_string() แปลง bitset เป็นสตริง ความยาวเท่ากัน ลำดับเหมือนกัน

ตัวอย่าง: "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

ยังมีอีกหลายการดำเนินการกับ bitset และ bitwise operators ที่ใช้งานได้