来自http://www.cs.bell-labs.com/cm/cs/pearls/sol01.html:
C代码是这样的:
#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];
void set(int i) { a[i>>SHIFT] |= (1<<(i & MASK)); }
void clr(int i) { a[i>>SHIFT] &= ~(1<<(i & MASK)); }
int test(int i){ return a[i>>SHIFT] & (1<<(i & MASK)); }
我找到了ctypes、BitArrays、numpy ,但我不确定它们是否能像上面的 C 代码一样高效。
例如,如果我编写这样的代码:
from ctypes import c_int
a=[c_int(9)]*1024*1024
使用的空间是 1M 字节还是更多?
有谁知道一些可以在 Python 中做同样事情的好库?