Bạn sử dụng các phép toán logic bit và dịch chuyển bit. (A tìm kiếm Google cho những điều khoản này có thể cung cấp cho bạn một số ví dụ.)
Về cơ bản bạn khai báo một kiểu số nguyên (bao gồm cả int
, char
, vv), sau đó bạn "thay đổi" giá trị số nguyên để bit mà bạn muốn, sau đó bạn làm một OR hoặc một AND với số nguyên.
Một số ví dụ minh họa nhanh chóng (trong C++):
inline bool bit_is_on(int bit_array, int bit_number)
{
return ((bit_array) & (1 << bit_number)) ? true : false;
}
inline void set_bit(int &bit_array, int bit_number)
{
bit_array |= (1 << bit_number);
}
inline void clear_bit(int &bit_array, int bit_number)
{
bit_array &= ~(1 << bit_number);
}
Lưu ý rằng điều này cung cấp "mảng chút" kích thước không đổi (sizeof(int) * 8
bit). Có lẽ điều đó là tốt cho bạn, hoặc có thể bạn sẽ muốn xây dựng một cái gì đó trên đầu trang này. (Hoặc sử dụng lại bất kỳ thư viện nào cung cấp.)
Điều này sẽ sử dụng ít bộ nhớ hơn bool
mảng ... Mã trình biên dịch tạo ra để truy cập các bit này sẽ lớn hơn và chậm hơn. Vì vậy, trừ khi bạn có một số lượng lớn các đối tượng cần chứa các mảng bit này, nó có thể có tác động tiêu cực ròng đến cả tốc độ và mức sử dụng bộ nhớ.
có bạn đã cố gắng tìm kiếm để xem nếu ai đó đã viết một cái gì đó bạn có thể sử dụng không? Mọi người sẽ không viết mã cho bạn. –
Tôi đã thực sự cố gắng chia sẻ một số mã tôi đã viết bằng cách đặt câu hỏi và trả lời nó, nhưng trang web này quá nhanh !!! trong vòng 10 phút nó đã đưa tôi đến lắp ráp câu trả lời của tôi, đã có hai câu trả lời đã xuất hiện! –
SO không có nghĩa là đăng các câu hỏi mà bạn có thể tự trả lời. Và thậm chí sau đó bạn có thể xem xét tìm hiểu những gì tồn tại trên chủ đề trên web và so sánh cách tiếp cận của bạn với những gì bạn tìm thấy, trước tiên. –