Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
void bitset_clear_bit(bitset *set, size_t pos) {
	if (pos >= set->nbits) {
	    SEGFAULT();
	}

	BITSET_WORD(set, pos) &= ~BITSET_MASK(pos);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
/**
 * 将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);
}