寫一個宏,判斷整數的某一位是否爲1

//判斷一個數的第n位是否爲1,n從0開始
#define IS_ONE(number, n) ((number >> n) & (0x1))
/*number右移n位, 那麼要顯示的那一位就到了第0位
而後number 與 0x1 相與
若是number第0位爲0, 那麼相與的結果就是0
若是number第0位爲1, 那麼相與的結果就是1
從而實現某一位是否爲1*/數組

一個位圖數組,unsigned int BIT_MAP[MAXSIZE],寫一個宏,判斷其中第x位是否爲1.
#define IS_BIT_SET(BIT_MAP, x) (((BIT_MAP[x/sizeof(unsigned int)]) >> (x%sizeof(unsigned int))) & (0x1))it

思路:
數組的每個元素是一個int型數據,一個數據佔32bit,
首先由輸入的x,求出數組的下標,和此下標中的第幾位(0到31),數據

好比輸入x爲95, 95/32 = 2餘31
則對應的是BIT_MAP[2] 的第31位。

遺留:若是輸入的x超過了數組的範圍,怎麼辦呢?

相關文章
相關標籤/搜索