Computer >> Máy Tính >  >> Lập trình >> C ++

Sự thật thú vị về bitet trong C ++?

Ngôn ngữ lập trình C ++ định nghĩa một vùng chứa trong Thư viện Mẫu chuẩn c ++ có tên là bitset. Vùng chứa tập hợp bit này được sử dụng để làm việc trên các phần tử ở cấp độ bit, tức là mỗi bit của biến các bit, tức là chuyển đổi nhị phân của giá trị đã cho.

1. Bitset giống như một chuỗi - Bitset là một vùng chứa các bit ( chỉ 0 và 1 là hợp lệ ). Bạn có thể tạo một bộ bit với bất kỳ tập hợp bit nào được chỉ định bởi giá trị chỉ số bắt đầu của bộ bit và số phần tử được coi là bộ bit.

Ví dụ - chúng ta cần đặt 4 phần tử bắt đầu từ giá trị chỉ số 2 của chuỗi bit 01001110. Tập hợp bit này sẽ nhận các phần tử 0011 sẽ được nối vào cuối tập bit. Vì vậy, giá trị của bộ bit 8 bit được xác định bằng phương pháp này là 00000011 .

Ví dụ

#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;
}

Đầu ra

00000010

2. Tạo Bitset từ chuỗi - Nếu bạn có một chuỗi chỉ có hai loại giá trị được sử dụng trong khi tạo. Bạn có thể chuyển đổi chuỗi này thành một tập hợp các bit xem xét các giá trị dưới dạng biểu diễn 0/1 tương ứng.

Hãy lấy một ví dụ để hiểu rõ hơn về khái niệm này,

Chúng ta có một chuỗi ‘xyxxyyx’, từ đó chúng ta có thể tạo một tập hợp bit có cùng độ dài với mảng xem xét x =0 và y =1. Tập hợp bit được tạo là 0100110 .

Có một phương thức khởi tạo được xác định trong thư viện để thực hiện tác vụ này -

bitset(str, offSet, size, zeroVal , oneVal) ;

Đây là một phương thức khởi tạo được định nghĩa để tạo một tập bit. Hãy cùng tìm hiểu sâu về hàm tạo và tìm hiểu những gì mà mỗi tham số của hàm tạo truyền tải.

str - Chuỗi được xem xét để tạo tập bit.

offSet - chỉ số chuỗi của chuỗi.

kích thước - Kích thước của tập bit sẽ được tạo.

zeroVal - Giá trị của chuỗi sẽ được coi là 0

oneVal - Giá trị của chuỗi sẽ được coi là 1]

Ví dụ

#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';
}

Đầu ra

The bitset is: 01001110

3. Chuyển bitet thành chuỗi - Trong bitet có chức năng chuyển bitet thành chuỗi. Hàm to_string () được sử dụng để lưu trữ các giá trị của bitet thành một chuỗi. Độ dài của chuỗi giống với độ dài của tập bit.

Thứ tự lưu trữ các phần tử của tập hợp bit vào chuỗi giống như thứ tự tập hợp bit, tức là phần tử đầu tiên của phần tử đầu tiên của tập hợp bit.

Chuyển đổi chuỗi của 01010100 là “01010100”.

Bạn có thể thay thế 0 và 1 bằng bất kỳ ký tự nào bằng cách chỉ định trong danh sách tham số của phương thức. Nó chỉ là mặt trái của những gì chúng ta đã học được khi xây dựng bitet.

Ví dụ

#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;
}

Đầu ra

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

Có nhiều hoạt động khác được thực hiện trên bitet. cũng có thể sử dụng một số toán tử bit ở đó. đây là các chức năng và thuộc tính cơ bản của tập bit được thảo luận ở đây.