Skip to content
Simple C++ dynamic bit array
C++ Shell C Python
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


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.