Does LargeInteger
have an equivalent to BigInteger
's testBit
?
If not, how can testBit
be performed on a LargeInteger
?
I don't yet have the necessary skills to reproduce ((this & (1<<n)) != 0)
.
I tried making a method by just copying & pasting the above code referenced from the docs:
static boolean testBit(int n){
return ((this & (1<<n)) != 0);
}
However, the compiler reports:
error: non-static variable this cannot be referenced from a static context
return ((this & (1<<n)) != 0);
^
error: bad operand types for binary operator '&'
return ((this & (1<<n)) != 0);
^
This is the best I can come up with given the API:
n
is the position of the bit to be tested.I assume you put this method in some utility class.
Explanation
Normally, you would do
num & (1 << pos)
to extract the bit atpos
position:If the whole thing is 0 then
x
is 0; otherwise,x
is 1.In the method above, I do
num >> pos
:We know that a binary number is odd when its least significant bit is 1, and it is even when its least significant bit is 0.
So if the number after right-shifting is odd, we know the bit is 1; if even, we know the bit is 0.