在bitset.h中 ,有這樣一個宏定義被廣泛用到 testbit
#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
#define BIT2BYTE(ibit) ((ibit) / BITSPERBYTE)
#define BIT2SHIFT(ibit) ((ibit) % BITSPERBYTE)
#define BIT2MASK(ibit) (1 << BIT2SHIFT(ibit))
ss是一個byte類型的指針, ibit是一個int
初看很是費解,分析下來也很簡單, 就是看當i把ss 寫成二進制形式的時候,
它的第ibit比特位等於1
例如ss = "\000\040", 則 ibit 是13的時候, 宏定義返回true