bitmap_bitremap — Apply map defined by a pair of bitmaps to a single bit
int bitmap_bitremap ( | int oldbit, |
const unsigned long * old, | |
const unsigned long * new, | |
int bits) ; |
oldbit
bit position to be mapped
old
defines domain of map
new
defines range of map
bits
number of bits in each of these bitmaps
Let old
and new
define a mapping of bit positions, such that
whatever position is held by the n-th set bit in old
is mapped
to the n-th set bit in new
. In the more general case, allowing
for the possibility that the weight 'w' of new
is less than the
weight of old
, map the position of the n-th set bit in old
to
the position of the m-th set bit in new
, where m == n % w.
The positions of unset bits in old
are mapped to themselves
(the identify map).
Apply the above specified mapping to bit position oldbit
, returning
the new bit position.
For example, lets say that old
has bits 4 through 7 set, and
new
has bits 12 through 15 set. This defines the mapping of bit
position 4 to 12, 5 to 13, 6 to 14 and 7 to 15, and of all other
bit positions unchanged. So if say oldbit
is 5, then this routine
returns 13.