Skip to content
Simple C++ dynamic bit array
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gtest-1.7.0
nbproject
.gitignore
Makefile
README
README.md
common.h
ds.DynamicBitset.cpp
ds.DynamicBitset.h
ds.DynamicBitset.test.h
dynamicbitset_test
dynamicbitset_test.cpp
test.h
test.this.module.h

README.md

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

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.
You can’t perform that action at this time.