想知道有没有log_2直接计算的API ?这是我当前的代码,我将其转换log_2(N)为log_e(N)/log_e(2).
BTW,好像对于普通的Java Double类型,有没有log_2(double_value)直接计算的方法?
我的 Java 代码,
BigInteger x = BigInteger.valueOf(16);
BigInteger y = BigInteger.valueOf((long)(Math.log(x.longValue()) / Math.log(2)));
System.out.println(y.doubleValue()); // return 4.0 as expected
Run Code Online (Sandbox Code Playgroud)
这是内置于BigIntegerAPI 中的。来自 Javadoc:
Run Code Online (Sandbox Code Playgroud)public int bitLength()返回 this 的最小二进制补码表示中的位数
BigInteger,不包括符号位。对于正数BigIntegers,这相当于普通二进制表示中的位数。(计算(ceil(log2(this < 0 ? -this : this+1)))。)