0
我正在使用以下代碼在C中創建位圖並啓用一個位。但問題是,當我正在閱讀時,我得到了比預期更高的一位。C位圖給出的值高於預期值
#define BITS_PER_WORD (sizeof(uint32_t) * CHAR_BIT)
#define WORD_OFFSET(b) ((b)/BITS_PER_WORD)
#define BIT_OFFSET(b) ((b) % BITS_PER_WORD)
main()
{
// declarations
int val = 2;
init_bits(&bmp);
set_bit(&bmp,val);
for (id = 0; id < sizeof(bmp); id++)
{
if (bmp & (1 << id))
{
trace(debug, "bit:%x", bmp,);
}
}
}
init_bits(uint32_t *words) {
(void)memset((void*)words, 0, sizeof(uint32_t));
}
set_bit(uint32_t *words, int n) {
words[WORD_OFFSET(n)] |= (1 << BIT_OFFSET(n));
}
所以,例如,如果我執行SET_BIT(& BMP,2),那麼我在十六進制得到(而不是2)4和SET_BIT 10(而不是8)所在地(& BMP,4)等。
任何幫助,非常感謝!
'C bitmap giving ....'並標記爲'C++'?刪除標籤。 – 2014-12-02 14:16:02