该函数查找char 型数组中第一个位0的比特位的位置,找到后并将该bit位置1,然后返回找到的位置。
参数:
arr[]:要查找的数组。
size:数组的大小
int get_zero_bit_position_set(unsigned char arr[], int size) {
int i, j;
for(i = 0; i < size; i++) {
for(j = 0; j < 8; j++) {
if((arr[i] & (1 << j)) == 0) {
arr[i] |= (1 << j);
return i * 8 + j;
}
}
}
return -1;/* not find */
}
该函数与上一个函数作用相反:将char型数组中某个bit位值清0。
参数:
arr[]:要置位的数组。
size:数组的大小
pos:数组中要清0的bit位位置。
int clear_set_bit_position(unsigned char arr[], int size,int pos)
{
arr[pos / 8] &= ~(1 << (pos % 8));
return pos;
}