C에는 자연로그를 구하는 log() 함수와, 밑(base)이 10인 상용 로그를 구하는 log10()함수만 있기때문에 밑이 2인 로그를 구하려면 직접 함수를 만들어야 한다. 


logB(숫자, 밑)


이라는 함수를 만들어 사용하도록 하자.

double logB(double x, double base) {
	return log(x)/log(base);
}


매크로 함수로 정의해서 사용해도 잘 된다.

#define logB(x, base) log(x)/log(base)


base에 2.0 대신 다른수를 넣어주면 다양한 밑을 가진 로그를 구할 수 있다.


원리는 다음과 같은 공식을 사용한 것이다.




예제 

#include <stdio.h>
#include <math.h>

//#define logB(x, base) log(x)/log(base)

double logB(double x, double base) {
	return log(x)/log(base);
}

int main() {
	printf("log2(8) = %f", logB(8.0,2.0));

	return 0;
}



+ Recent posts