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



Python源码(八) testbit宏定义_第1张图片

你可能感兴趣的:(Python)