bitmap_ord_to_pos — find position of n-th set bit in bitmap


unsigned int bitmap_ord_to_pos (const unsigned long * buf,
 unsigned int ord,
 unsigned int nbits);


const unsigned long * buf

pointer to bitmap

unsigned int ord

ordinal bit position (n-th set bit, n >= 0)

unsigned int nbits

number of valid bit positions in buf


Map the ordinal offset of bit ord in buf to its position in buf. Value of ord should be in range 0 <= ord < weight(buf). If ord >= weight(buf), returns nbits.

If for example, just bits 4 through 7 are set in buf, then ord values 0 through 3 will get mapped to 4 through 7, respectively, and all other ord values returns nbits. When ord value 3 gets mapped to (returns) pos value 7 in this example, that means that the 3rd set bit (starting with 0th) is at position 7 in buf.

The bit positions 0 through nbits-1 are valid positions in buf.