x的记录基数n

Ami*_*jad 3 c++ math logarithm

我有一点问题.谁知道我们如何使用Shift_L或Shift_R计算日志基数n?

例如:对于n = 2,我们有这个解决方案:

int log(int n){
int res = 0;
while((n>>=1))
    res++;
return res;
}
Run Code Online (Sandbox Code Playgroud)

Car*_*ten 17

你似乎并不想为底数的对数b,但最大的整数n,这样n <= log_b(x).如果是这种情况,以下功能应满足您的需求:

int intlog(double base, double x) {
    return (int)(log(x) / log(base));
}
Run Code Online (Sandbox Code Playgroud)


小智 6

如果我正确理解您的问题,那么这是一个数学问题,而不是实际的编程问题:

log_2 (x) = log_a (x) / log_a (2) 其中a可以是任何基数。

因此,您可以使用math.h的功能log(double)

double res = log(x)/log(2);

  • 我才16岁,对数我并不了解! (4认同)
  • 我拥有工程学博士学位,因此我也必须查找它!:D (3认同)