Skip to content
Permalink
ae1fb04578
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
26 lines (19 sloc) 1.69 KB

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 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.

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, 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.