bitmapset
正の整数をbitとして扱うための汎用ルーチン。
bitmapset.h, bitmapset.cで定義されている。
bitmapsetでは整数nは、右からn番目のビットが立った2進数へ変換されて扱われる。
例:
0 -> 00000001
1 -> 00000010
2 -> 00000100
3 -> 00001000
bitmapセットのデータ構造は以下のように定義されている。
typedef uint32 bitmapword; /* must be an unsigned type */ typedef struct Bitmapset { int nwords; /* number of words in array */ bitmapword words[1]; /* really [nwords] */ } Bitmapset; /* VARIABLE LENGTH STRUCT */
bitmapwordは32bitなので、1wordで32まで表現できる。
words配列は可変長で、扱う数値の大きさに合わせてメモリが確保される。
nwordsに配列の大きさが入る。