Skip to content
Go to file
Cannot retrieve contributors at this time
26 lines (19 sloc) 1.73 KB


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 0th 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 when n is not a multiple of 8.

The code is compiled under both MSVC and GCC, and tested using Google C++ testing framework (

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, a const unsigned char*, or even an int. The last conversion is possible if the size of the bit-array is less than the number of bits in an int.
  • You can print a bit-array through an output stream like cout << myBitArray.

To Do

  • Standard bitwise operations between two DynamicBitset objects.
You can’t perform that action at this time.