Там какой-либо путь состоит в том, чтобы записать, журнал (базируйтесь 2), функция?
Язык C имеет 2 созданных в функции->>
1.log
который является основой e.
2.log10
основа 10;
Но я должен зарегистрировать функцию основы 2. Как вычислить это.
Простая математика:
log2 (x) = logy (x) / logy (2)
где y может быть чем угодно, что для стандартных функций log равно либо 10, либо e.
В C99 есть log2
(а также log2f
и log2l
для float и long double).
Если вы ищете интегральный результат, вы можете просто определить самый высокий бит, установленный в значении, и вернуть его позицию.
Как указано на http://en.wikipedia.org/wiki/Logarithm :
logb(x) = logk(x) / logk(b)
Это означает, что:
log2(x) = log10(x) / log10(2)
Проконсультируйтесь с вашим курсом базовой математики, log n / log 2
. Неважно, выберете ли вы log
или log10
в этом случае, деление на log
новой базы делает свое дело.