Digamos que desea almacenar información sobre 64 personas, ya sean hombres o mujeres. La forma más sencilla de almacenarlo es usar una matriz de 64 booleanos.
Ahora cada booleano es de 1 byte (8 bits). Dado que cada bit puede ser 0 o 1. Por lo tanto, esta información también se puede almacenar en un bit. Por lo tanto, podemos almacenar información de 64 personas en 64 bits, es decir, 8 bytes utilizando una matriz de bits. Anteriormente necesitábamos 64 bytes, ahora solo 8 bytes.
En general, desde n bytes , podemos reducir el tamaño de almacenamiento a n / w bytes donde la máquina tiene w bits en su unidad básica de almacenamiento.
- ¿Cómo funcionará este caché asociativo con el algoritmo de reemplazo de LRU?
- ¿Es mejor hacer InterviewBit ahora (actualmente estoy en mi quinto semestre) o hacer SPOJ ahora y luego hacer InterviewBit solo 3 o 4 meses antes de las entrevistas? Solo conozco algunas estructuras de datos y algoritmos básicos. He hecho 40 problemas en SPOJ.
- ¿Por qué no ha habido sesiones sobre los cursos de Algoritmos I y II de Robert Sedgewick en Coursera durante tanto tiempo?
- ¿Cuál es el curso / certificación mejor pagado disponible para estructuras de datos y algoritmo?
- ¿Cómo imprimir todos los N dígitos (N es un número par) de un número Torn con una complejidad menor que O (N ^ 2)? ¿Qué algoritmo debo usar?
Pero, ¿por qué entonces utilizamos matrices booleanas, porque es simple? y la mayoría de los idiomas no dan instrucciones para manipular directamente los bits.
Entonces cómo hacemos eso :
Utilice operaciones de bit OR, AND, etc.
Para acceder a m-ésimo bit indexado en un mapa de n bits que está representado por una matriz de bytes ceil (n / w).
matriz [ceil (n / w)]
resto = m% w
bool isMthBitSet = array [piso (m / w)] Y (1 << (w-1-resto))