Python源碼(八) testbit宏定義

在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




發佈了94 篇原創文章 · 獲贊 20 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章