Depending on a variable 1-7, I am interested in ANDing a byte value to to get that number of bits.

Currently I'm doing this:

function getMaskedBits(num, Bit_location: Byte): Byte;
  masks: array[1..7]of Byte=(127,63,31,15,7,3,1);
  Result:=num and masks[Bit_location];

is there a better (or more efficient way of doing this?)

This works just fine.

You can probably also use something like this:

Result := num and (127 shr (bit_location - 1));
This article has been dead for over six months. Start a new discussion instead.