我有一个小问题。谁知道我们如何用 Shift_L 或 Shift_R 计算以 n 为底的对数?
例如:对于 n=2,我们有这个解决方案:
int log(int n){
int res = 0;
while((n>>=1))
res++;
return res;
}
您似乎不想要底数的对数,而是想要最大的b
整数n
。n <= log_b(x)
如果是这种情况,以下功能应该可以满足您的需求:
int intlog(double base, double x) {
return (int)(log(x) / log(base));
}
好吧,如果我正确理解您的问题,这是一个数学问题,而不是实际的编程问题:
log_2 (x) = log_a (x) / log_a (2)
其中 a 可以是任何基数。
因此,您可以使用math.h
' 功能log(double)
double res = log(x)/log(2);