如何在c ++中计算log base 2?

时间:2013-02-14 09:56:57

标签: c++

这是我的代码。

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include <cmath>
#include <functional>
using namespace std;
void main()
{
    cout<<log2(3.0)<<endl;

}

但是上面的代码会给出错误。错误代码是:错误C3861:'log2':找不到标识符。 如何使用c ++计算log2?

5 个答案:

答案 0 :(得分:7)

使用高中数学:

log_y(x) = ln(x)/ln(y)

但我同意,那里没有这样的实用功能有点奇怪。这可能是由于这些函数几乎直接映射到FPU ..

但是不要担心使用这种“扩展”方式。数学不会改变。该公式至少在接下来的几个生命周期内有效。

答案 1 :(得分:6)

例如,对于基数2中的log 3

log (3) / log(2)

会这样做。

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << log(3.0) / log(2.0) << endl;

}

答案 2 :(得分:4)

以下代码适用于gcc编译器

#include <iostream>
#include<stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cmath> 
#include <functional>
using namespace std;
main()
{
    cout<<log2(3.0)<<endl;

}

答案 3 :(得分:3)

这应该是用于查找具有任何给定数字的基数

的日志的一般函数
double log_base_n(double y, double base){
return log(y)/log(base);
}

这样:

cout<<log_base_n(3.0,2.0);

应该这样做。

答案 4 :(得分:1)

使用log(3.0)/log(2.0)。 {0}中未包含log2

double log_2( double n )  
{  
    return log(n) / log(2);  
}