21.5 怎樣實現比特數組或集合?

使用 int 或 char 數組, 再加上訪問所需比特的幾個宏。 這裡有一些簡單的宏定義, 用於 char 數組:
    #include <limits.h>     /* for CHAR_BIT */

    #define BITMASK(b) (1 << ((b) % CHAR_BIT))
    #define BITSLOT(b) ((b) / CHAR_BIT)
    #define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b))
    #define BITTEST(a, b) ((a)[BITSLOT(b)] & BITMASK(b))
如果你沒有 <limits.h>, 可以定義  CHAR_BIT 為 8。

參考資料: [H&S, Sec. 7.6.7 pp. 211-216]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)