dynamicbitset
Simple C++ dynamic bit array. It is like std::bitset
but its size can be dynamically set. The bits are stored from left-to-right order as if in an array, where the leftmost bit is the 0
th and the rightmost bit is the (n-1)
th bit.
Under the hood, bits are stored in a byte array, and the rightmost 8-(n%8)
bits in the rightmost byte remain unused.
The code is compiled under both MSVC
and GCC
, and tested using Google C++ testing framework (http://code.google.com/p/googletest/).
See the ds.dynamicbitset.test.h
file for usage.
Supported Operations
- You can create a bit-array whose size can be set dynamically set. This is in contrast with
std::bitset
for which the size needs to be set in compile-time through template argument. - You can create of empty (zero-size) bit-array which can be later initialized from any existing bit-array.
- You can get/set any bit. You can also set bits from an integer, where the higher-order bits of the supplied integer are copied to the bit-array.
- You can perform any/all/flip operations on the bit-array.
- You can perform standard bit-by-bit comparison operations between two bit-arrays. Supported comparisons are
<, <=, >, >=, !=, ==
. - You can extract a particular byte from the bit array.
- You can convert the bit-array into an
std::string
, aconst unsigned char*
, or even anint
. The last conversion is possible if the size of the bit-array is less than the number of bits in anint
. - You can print a bit-array through an output stream like
cout << myBitArray
.
To Do
- Standard bitwise operations between two
DynamicBitset
objects.