public bool this[int index]
{
get
{
uint bytesIndex = (uint)( index / _byteWidth );
int bitIndex = index % _byteWidth;
uint b = ( _bytes[bytesIndex] >> bitIndex ) & 1u;
return Convert.ToBoolean( b );
}
set
{
uint bytesIndex = (uint)( index / _byteWidth );
int bitIndex = index % _byteWidth;
uint b = 1u << (int)bitIndex ;
if( value )
{
_bytes[bytesIndex] = _bytes[bytesIndex] | b;
}
else
{
_bytes[bytesIndex] = _bytes[bytesIndex] & ( ~b );
}
}
}