LargeInteger
doesn't appear to have an equivalent function to BigInteger
's and
.
Since and(BigInteger val)
"Returns a BigInteger whose value is (this & val). (This method returns a negative BigInteger if and only if this and val are both negative.)
", I tried to follow this great answer on reproducing testBit
with
static LargeInteger and(LargeInteger i, LargeInteger j) {
return i & j;
}
but the compiler reports
error: bad operand types for binary operator '&'
return i & j;
^
How can BigInteger
's and
be reproduced to be used on LargeInteger
?
org.jscience.mathematics.number.LargeInteger
does not seem to have a similar bit-wise function and
(if I have sougth the right class & version).
static LargeInteger and(LargeInteger lhs, LargeInteger rhs) {
long l = lhs.longValue(); // Low order bits
long r = rhs.longValue();
long lo = l & r;
LargeInteger hi = LargeInteger.ZERO;
if (lhs.bitLength() > 64 && rhs.bitLength() > 64) {
hi = and(lhs.shiftRight(64), rhs.shiftRight(64)).shiftLeft(64);
}
return hi.plus(lo);
}
Mind, that for a bitwise or
the condition needs ||
instead of &&
.