12
एक बिटमैप array of bits है। सी में इसे कैसे लागू किया जाता है?सी में बिटमैप क्या है?
एक बिटमैप array of bits है। सी में इसे कैसे लागू किया जाता है?सी में बिटमैप क्या है?
मैं आप कैसे थोड़ा मानचित्र (या बिट सरणी) सी में हैरानी की बात है, विकिपीडिया पर Bit_array प्रविष्टि अवधारणा का वर्णन करता है लागू करने के लिए पूछ रहे हैं मान, लेकिन वास्तव में कैसे मौलिक संचालन को लागू करने के लिए प्रदर्शित नहीं करता है , तो यहाँ जाता है।
संक्षेप में, अपने पसंदीदा हस्ताक्षरित प्रकार की एक सरणी बनाएं, और यह निर्धारित करने के लिए सही अंकगणित करें कि इसमें थोड़ा सेट कैसे सेट/साफ़ करें।
#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;
}