int bitset_test_bit(bitset *set, size_t pos) { if (pos >= set->nbits) { SEGFAULT("pos >= set->nbits: %zd >= %zd", pos, set->nbits); } return (BITSET_WORD(set, pos) & BITSET_MASK(pos)) != 0; }
void bitset_clear_bit(bitset *set, size_t pos) { if (pos >= set->nbits) { SEGFAULT(); } BITSET_WORD(set, pos) &= ~BITSET_MASK(pos); }
void bitset_set_bit(bitset *set, size_t pos) { if (pos >= set->nbits) { SEGFAULT("pos >= set->nbits: %zd >= %zd", pos, set->nbits); } BITSET_WORD(set, pos) |= BITSET_MASK(pos); }
/** * 将bitset类型的set变量中的bits的第pos位清零 * * @param set 要操作的对象 * @param pos 第pos位 */ void bitset_clear_bit(bitset *set, size_t pos) { if (pos >= set->nbits) { SEGFAULT(); } /* 先取出pos所在的size_t单位,然后将其与一个size_t进行与,可修改该位 */ BITSET_WORD(set, pos) &= ~BITSET_MASK(pos); }