两个的最高幂但小于给定的 BigInteger
Highest power of two but smaller than given BigInteger
我需要找到两个的最大幂但小于给定的 BigInteger。我为此编写了以下方法并且有效,只是想知道是否存在更好的解决方案甚至不同的解决方案?
private static BigInteger getHighestPowerOf2(BigInteger bigInteger)
{
int bitLength = bigInteger.bitLength();
for (int index = 0; index < (bitLength - 1); index++)
bigInteger = bigInteger.clearBit(index);
return bigInteger;
}
因为我正在处理超过 long 和 int 限制的大数,所以我不能使用 & 运算符。
我正在使用 Java 7。
提前致谢。
使用 setBit 设置一位而不是清除很多位怎么样?
private static BigInteger getHighestPowerOf2(BigInteger bigInteger)
{
int bitLength = bigInteger.bitLength();
return BigInteger.ZERO.setBit(bitLength-1);
}
我需要找到两个的最大幂但小于给定的 BigInteger。我为此编写了以下方法并且有效,只是想知道是否存在更好的解决方案甚至不同的解决方案?
private static BigInteger getHighestPowerOf2(BigInteger bigInteger)
{
int bitLength = bigInteger.bitLength();
for (int index = 0; index < (bitLength - 1); index++)
bigInteger = bigInteger.clearBit(index);
return bigInteger;
}
因为我正在处理超过 long 和 int 限制的大数,所以我不能使用 & 运算符。 我正在使用 Java 7。 提前致谢。
使用 setBit 设置一位而不是清除很多位怎么样?
private static BigInteger getHighestPowerOf2(BigInteger bigInteger)
{
int bitLength = bigInteger.bitLength();
return BigInteger.ZERO.setBit(bitLength-1);
}