Đây là một chương trình C ++ để thực hiện Bit Array. Mảng bit là một cấu trúc dữ liệu mảng lưu trữ dữ liệu một cách nhỏ gọn. Về cơ bản, nó được sử dụng để triển khai một cấu trúc dữ liệu đơn giản.
Thuật toán
Hàm và mã giả:
Begin Function getBit(int val,int pos) singleBit->b = 0 if(pos == 0) singleBit->b = val & 1 else singleBit->b = ( val & (1 << pos ) ) >> pos return singleBit Function setBit(BitArr *bt,B *bit,int pos) bt->bVal[pos] = bit return bt Function getVal(BitArr *bArray) initialize val = 0 initialize bVal = 0 bVal = bArray->bVal[0]->b val= val|bVal for i = 1 to B_A_LENGTH-1 bVal = bArray->bVal[i]->b bVal =bVal << i val=val | bVal return val done End.
Mã mẫu
#include <iostream> #include <string> using namespace std; #define B_A_LENGTH 4 typedef struct { unsigned int b : 1; } B; class BitArr { private: B **bVal; public: BitArr() { bVal = new B* [B_A_LENGTH]; } B *getBit(int val,int pos) { B *singleBit = new B; singleBit->b = 0; if(pos == 0) { singleBit->b = val & 1; } else { singleBit->b = ( val & (1 << pos ) ) >> pos; } return singleBit; } BitArr *setBit(BitArr *bt,B *bit,int pos) { bt->bVal[pos] = bit; return bt; } int getVal(BitArr *bArray) { int val = 0; unsigned int bVal = 0; bVal = bArray->bVal[0]->b; val |= bVal; for(int i = 1; i < B_A_LENGTH; i++) { bVal = bArray->bVal[i]->b; bVal <<= i; val |= bVal; } return val; } }; int main() { int v; cout<<"Enter 4 bit integer value (0 - 8): "; cin>>v; BitArr bt, *samplebt; samplebt = new BitArr; for (int i = 0; i < B_A_LENGTH; i++) { samplebt = bt.setBit(samplebt, bt.getBit(v, i), i); cout<<"Bit of "<<v<<" at positon "<<i<<": "<<"\n"<<bt.getBit(v, i)->b<<endl; } cout<<"The value is: "<<bt.getVal(samplebt)<<endl; return 0; }
Đầu ra
Enter 4 bit integer value (0 - 8): 6Bit of 6 at positon 0: 0 Bit of 6 at positon 1: 1 Bit of 6 at positon 2: 1 Bit of 6 at positon 3: 0 The value is: 6