Eine Bitmap ist eine array of bits. Wie ist es in C implementiert?Was ist eine Bitmap in C?
12
A
Antwort
34
Ich nehme an, Sie zu fragen, wie - eine Bitmap (oder Bit-Array) implementiert in C Überraschenderweise der Bit_array Eintrag auf Wikipedia den Begriff beschreibt, zeigen aber nicht wirklich, wie man die grundlegenden Operationen zu implementieren , so geht das hier.
Kurz gesagt, machen Sie ein Array Ihres bevorzugten unsigned Typs, und machen Sie die richtige Arithmetik, um zu entscheiden, wie Sie ein Bit darin setzen/löschen.
#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;
}
Verwandte Themen
- 1. Bitmap-Bitmap in C# verkleinern
- 2. Was ist der Unterschied zwischen Bitmap.Clone() und neuer Bitmap (Bitmap)?
- 3. Was passiert mit einer Bitmap in einer PictureBox, sobald Image auf eine andere Bitmap gesetzt ist?
- 4. Ist eine unveränderliche Bitmap schneller als eine veränderbare Bitmap?
- 5. Vergrößerung Bitmap in c
- 6. Was ist eine Nachricht in objective-c?
- 7. Was ist eine "statische Methode" in C#?
- 8. Was genau ist eine Definitionsregel in C++?
- 9. Was ist eine casted Parameteranweisung in C?
- 10. Was ist eine virtuelle Methode in C++?
- 11. Was ist ** in C++?
- 12. Was ist der Nachteil von Bitmap-Caching in Silverlight 4?
- 13. C# Bitmap-Liste Flushing
- 14. mfc Bitmap liest eine vollständig schwarze Bitmap
- 15. C# Bitmap/Grafikspeicher
- 16. Was ist eine gute Matrixmanipulationsbibliothek für C?
- 17. Objective-C: Was ist eine faule Klasse?
- 18. Was ist Vtable in C++
- 19. Was ist eine Wertklasse und was ist eine Referenzklasse in C#?
- 20. Überlagern Bitmap über eine andere Bitmap
- 21. Zeichnen auf C# Bitmap mit C++
- 22. Was ist für eine C-Startroutine erforderlich?
- 23. Konvertieren von Bitmap PixelFormats in C#
- 24. Was ist! 0 in C?
- 25. Was ist Vorwärtsreferenz in C?
- 26. Was ist DBL_MAX in C++?
- 27. Was ist '\ 0' in C++?
- 28. Was ist [und] in C#?
- 29. Was ist "-1L" in C?
- 30. Was ist "??" Operator in C#?