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:
nis 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 atposposition:If the whole thing is 0 then
xis 0; otherwise,xis 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.