一 、 利用JDK的Math包内置方法和对数换底公式,快速完成所需功能
/**
* 换底公式直接计算
*/
public static int log2(int a) {
return (int) Math.ceil(Math.log(a)/Math.log(2));
}
二、利用以为2底对数的定义,使用for循环进行求解,注意对于2的幂次的处理
/**
* 利用要求解的结果进行计算
*/
public static int log2(int a) {
int result = 0;
for (int i = result - 1; i > 0; i = i / 2) {
result++;
}
return result;
}