Current direction:
Start with and unsigned char which is 1 Byte on my system using sizeof. Range is 0-255. If length is the number of bits I need then elements is the number of elements (bytes) I need in my array.
constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0);
unsigned char bit_arr[elements];
Now I add basic functionality such as set, unset, and test. Where j is the bit per byte index, i is the byte index and h = bit index. We have i = h / 8 and j = i % 8.
Psuedo-Code :
bit_arr[i] |= (1 << j); // Set
bit_arr[i] &= ~(1 << j); // Unset
if( bit_arr[i] & (1 << j) ) // Test
CHAR_BITSwill tell you how many bits are in achar(which is the same as a byte in C, BTW -- it's defined as the smallest individually addressable unit of memory). </pedantry>if( bit_arr[i] &= pow(2,j) )for the test is wrong, just use¬&=.