Utiliza las operaciones lógicas bit a bit y el cambio de bit. (Una búsqueda en Google de estos términos podría darle algunos ejemplos.)
Básicamente se declara un tipo entero (incluyendo int
, char
, etc.), entonces los valores enteros "SHIFT" para el bit deseado, y después lo hace un OR o un AND con el número entero.
Algunos ejemplos ilustrativos rápidos (en C++):
inline bool bit_is_on(int bit_array, int bit_number)
{
return ((bit_array) & (1 << bit_number)) ? true : false;
}
inline void set_bit(int &bit_array, int bit_number)
{
bit_array |= (1 << bit_number);
}
inline void clear_bit(int &bit_array, int bit_number)
{
bit_array &= ~(1 << bit_number);
}
en cuenta que este ofrece "conjuntos de bits" de tamaño constante (sizeof(int) * 8
bits). Quizás esté bien para ti, o tal vez quieras construir algo además de esto. (O reutilice cualquier biblioteca que proporcione)
Esto utilizará menos memoria que las matrices bool
... SIN EMBARGO ... El código que el compilador genera para acceder a estos bits será más grande y más lento. Por lo tanto, a menos que tenga una gran cantidad de objetos que necesiten contener estas matrices de bits, podría tener un impacto neto negativo en el uso de la velocidad y la memoria.
¿Ha intentado buscar para ver si alguien ha escrito algo que se puede utilizar? La gente no solo va a escribir tu código por ti. –
En realidad, estaba tratando de compartir un código que había escrito haciendo una pregunta y respondiéndola, ¡pero este sitio es muy rápido! En los 10 minutos que tardé en preparar mi respuesta, ¡ya han aparecido dos respuestas! –
SO no está destinado a publicar preguntas que pueda contestar usted mismo. E incluso entonces, puede considerar buscar lo que existe sobre el tema en la web y comparar su enfoque con lo que encuentre, primero. –