Register of bits.
The ExtensiveBitRegister is similar to the BitRegister, but allows for arbitrary number of bits to be stored and operated on.
Example
int main(){
Streams::out << "Assignment\n";
bitRegister0 = 0xFF00FF00;
Streams::out << bitRegister0 << "\n";
Streams::out << "\nSet individual bits\n";
bitRegister0.setBit(2, 1);
bitRegister0.setBit(30, 0);
Streams::out << bitRegister0 << "\n";
bitRegister0 = 0xFFFF0000;
bitRegister1 = 0x00FF00FF;
Streams::out << "\nBitwise operations\n";
Streams::out << (bitRegister0 | bitRegister1) << "\n";
Streams::out << (bitRegister0 & bitRegister1) << "\n";
Streams::out << (bitRegister0 ^ bitRegister1) << "\n";
Streams::out << "\nCount number of ones\n";
Streams::out << bitRegister0.getNumOneBits() << "\n";
Streams::out << "\nClear a register\n";
bitRegister0.clear();
Streams::out << bitRegister0 << "\n";
Streams::out << "\nBit shift\n";
Streams::out << bitRegister1 << "\n";
Streams::out << (bitRegister1 << 1) << "\n";
Streams::out << (bitRegister1 << 2) << "\n";
Streams::out << (bitRegister1 >> 1) << "\n";
Streams::out << (bitRegister1 >> 2) << "\n";
}
Output
Assignment
0000000000000000000000000000000011111111000000001111111100000000
Set individual bits
0000000000000000000000000000000010111111000000001111111100000100
Bitwise operations
0000000000000000000000000000000011111111111111110000000011111111
0000000000000000000000000000000000000000111111110000000000000000
0000000000000000000000000000000011111111000000000000000011111111
Count number of ones
16
Clear a register
0000000000000000000000000000000000000000000000000000000000000000
Bit shift
0000000000000000000000000000000000000000111111110000000011111111
0000000000000000000000000000000000000001111111100000000111111110
0000000000000000000000000000000000000011111111000000001111111100
0000000000000000000000000000000000000000011111111000000001111111
0000000000000000000000000000000000000000001111111100000000111111