Как записать основу журнала (2) в c/c ++

Там какой-либо путь состоит в том, чтобы записать, журнал (базируйтесь 2), функция?

Язык C имеет 2 созданных в функции->>

1.log который является основой e.

2.log10 основа 10;

Но я должен зарегистрировать функцию основы 2. Как вычислить это.

90
задан Rick Smith 3 April 2017 в 20:42
поделиться

6 ответов

Простая математика:

log2 (x) = logy (x) / logy (2)

где y может быть чем угодно, что для стандартных функций log равно либо 10, либо e.

185
ответ дан 24 November 2019 в 06:54
поделиться

В C99 есть log2 (а также log2f и log2l для float и long double).

52
ответ дан 24 November 2019 в 06:54
поделиться

Если вы ищете интегральный результат, вы можете просто определить самый высокий бит, установленный в значении, и вернуть его позицию.

51
ответ дан 24 November 2019 в 06:54
поделиться

Как указано на http://en.wikipedia.org/wiki/Logarithm :

logb(x) = logk(x) / logk(b)

Это означает, что:

log2(x) = log10(x) / log10(2)
9
ответ дан 24 November 2019 в 06:54
поделиться
log2(x) = log10(x) / log10(2)
3
ответ дан 24 November 2019 в 06:54
поделиться

Проконсультируйтесь с вашим курсом базовой математики, log n / log 2 . Неважно, выберете ли вы log или log10 в этом случае, деление на log новой базы делает свое дело.

0
ответ дан 24 November 2019 в 06:54
поделиться