У меня небольшая проблема.
Кто знает, как мы можем рассчитать лог
база с Shift_L или Shift_R?
например: для 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)
где может быть любая база.
Поэтому вы можете использовать math.h
функция log(double)
double res = log(x)/log(2);