Бревно базы н х

У меня небольшая проблема.
Кто знает, как мы можем рассчитать лог
база с Shift_L или Shift_R?

например: для n = 2 у нас было такое решение:

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

-3

Решение

Вы не хотите логарифм для базы b, но наибольшее целое число n чтобы n <= log_b(x), Если это так, следующая функция должна служить вашим потребностям:

int intlog(double base, double x) {
return (int)(log(x) / log(base));
}
8

Другие решения

Что ж, это скорее математическая задача, чем проблема программирования, если я правильно понимаю вашу проблему:

log_2 (x) = log_a (x) / log_a (2) где может быть любая база.

Поэтому вы можете использовать math.hфункция log(double)

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

2

По вопросам рекламы [email protected]