7

少し問題があります。Shift_L または Shift_R を使用して対数底 n を計算する方法を誰が知っていますか?

例: n=2 の場合、次の解決策がありました。

int log(int n){
int res = 0;
while((n>>=1))
    res++;
return res;
}
4

2 に答える 2

29

底の対数は必要ないようですbが、最大の整数nn <= log_b(x). その場合は、次の関数がニーズに応えます。

int intlog(double base, double x) {
    return (int)(log(x) / log(base));
}
于 2013-09-18T14:09:44.967 に答える