Say I have some bitmask, such as int b=0b1010110
.
Having another int m
, there are 2^4=16 options on what m & b
can be: the values of bits 1,2,4,6 of m & b
can be all either 0
or 1
while all other values are 0
.
I want to extract an integer between 0
and 15
from m & b
as efficiently as possible, thereby discarding all the 0-bits in b
.
It is easy to do in O(B)
time (where b
has B
bits set) by just checking the specific bits of m
.
I want this to work independently of b
, so no hard-coding of the bits of b
. The bits of b
are also available in an array.
Is there a bit-operation to do this faster, in O(1)
or O(log B)
or so?