Un mapa de bits es array of bits. ¿Cómo se implementa en C?¿Qué es un mapa de bits en C?
12
A
Respuesta
34
Asumo que estás preguntando cómo poner en práctica un mapa de bits (o matriz de bits) en C. Sorprendentemente, la entrada en la wikipedia Bit_array describe el concepto, pero en realidad no muestran cómo implementar las operaciones fundamentales , así que aquí va.
En resumen, crea una matriz de tu tipo sin signo favorito y realiza la aritmética correcta para decidir cómo configurar/borrar un bit en ella.
#include <limit.h> /* for CHAR_BIT */
#include <stdint.h> /* for uint32_t */
typedef uint32_t word_t;
enum { BITS_PER_WORD = sizeof(word_t) * CHAR_BIT };
#define WORD_OFFSET(b) ((b)/BITS_PER_WORD)
#define BIT_OFFSET(b) ((b) % BITS_PER_WORD)
void set_bit(word_t *words, int n) {
words[WORD_OFFSET(n)] |= (1 << BIT_OFFSET(n));
}
void clear_bit(word_t *words, int n) {
words[WORD_OFFSET(n)] &= ~(1 << BIT_OFFSET(n));
}
int get_bit(word_t *words, int n) {
word_t bit = words[WORD_OFFSET(n)] & (1 << BIT_OFFSET(n));
return bit != 0;
}
Cuestiones relacionadas
- 1. Afilar en un mapa de bits usando C#
- 2. Dibujo en C# mapa de bits con C++
- 3. C#: Dibujar un mapa de bits en otro, con transparencia
- 4. ¿Qué es un "análisis de montón de mapa de bits" en un plan de consulta?
- 5. Texto central en un mapa de bits
- 6. Diferencia entre un mapa de bits y una imagen de mapa de bits en WPF
- 7. Conversión de mapa de bits: crear un mapa de bits que excluya los lados transparentes del mapa de bits transparente
- 8. ¿Cuál es la diferencia entre Bitmap.Clone() y el nuevo mapa de bits (mapa de bits)?
- 9. Convirtiendo un mapa de bits a monocromo
- 10. Conversión PixelFormats de mapa de bits en C#
- 11. Redimensionar proporcionalmente un mapa de bits
- 12. Preservar los valores de mapa de bits al crear un nuevo mapa de bits desde System.Drawing.Image
- 13. Imprimir un mapa de bits WPFImage
- 14. presentación convertida en mapa de bits
- 15. Cómo desenfocar un mapa de bits (Android)?
- 16. TextRenderer.DrawText en mapa de bits vs OnPaintBackground
- 17. Rotar un mapa de bits 90 grados
- 18. ¿Cómo limpiar un mapa de bits?
- 19. ¿Cómo puedo transformar un mapa de bits en un Uri?
- 20. C# "El parámetro no es válido". creando un nuevo mapa de bits
- 21. Trabajar con mapa de bits en WPF
- 22. Guardar un mapa de bits en un MemoryStream
- 23. algoritmo de contraste más rápido para un mapa de bits
- 24. Dibujando en un mapa de bits en escala de grises de 16 bits en la memoria
- 25. Cuente el número de "agujeros" en un mapa de bits
- 26. Detectar contacto en el mapa de bits
- 27. Girar mapa de bits en Android Canvas
- 28. Invalidar en el propio mapa de bits
- 29. Convertir Kinect ColorImageFrame en mapa de bits
- 30. Cambiar mapa de bits extraíble en LayerListDrawable