통사론
더블 NS ( 더블 베이스, 더블 특급);
NS NS() 함수는 다음에서 정의됩니다. 수학.h 헤더 파일.
인수
이 함수는 두 개의 인수를 취합니다. 베이스 그리고 특급, 의 값을 계산하기 위해 베이스 의 힘으로 제기 특급 . 여기 베이스 그리고 특급 둘 다 이중입니다.
반환 값
성공 시, NS() 함수는 다음 값을 반환합니다. 베이스 의 힘으로 제기 특급 .
값의 경우 특급 는 0이고 NS() 함수는 1을 반환합니다.
만약에 베이스 음수이고 특급 적분하지 않으며, NS() 함수 반환 난 (숫자가 아님).
예
//예제1.c#포함하다
#포함하다
정수기본()
{
정수결과;
결과= (정수) NS (삼,5);
인쇄 ('Npow(3,5) => %d',결과);
인쇄 ('Npow(3,-5) => %lf', NS (삼, -5));
인쇄 ('Npow(-3,-5) => %lf', NS (-삼, -5));
인쇄 ('Npow(3,5.1) => %lf', NS (삼,5.1));
인쇄 ('Npow(-3,5.1) => %lf', NS (-삼,5.1));
인쇄 ('Npow(-3,-5.1) => %lfN', NS (-삼, -5.1));
반품 0;
}
Example1.c에서 우리는 출력을 보았습니다. NS() 기능. 여기에서 우리는 -lm 수학 라이브러리에 연결할 명령줄 매개변수입니다. 10행에서 13행까지 예상한 대로 출력을 얻었습니다. 14행과 15행의 경우 -난 (숫자가 아님) 두 번째 인수가 정수가 아니기 때문입니다.
비트 시프팅을 사용한 지수
지수를 2의 거듭제곱으로 계산하려면 비트 시프팅을 사용하여 계산할 수 있습니다.
m만큼 왼쪽으로 이동하면 첫 번째 항에 해당하고 2는 m의 거듭제곱에 해당합니다.
N<< m = n*pow(2,m)
m만큼 오른쪽으로 이동하는 것은 첫 번째 항을 m의 거듭제곱으로 나눈 값과 같습니다.
엔>>엠 = n/pow(2,m)
m이 양수일 때만 작동합니다.
//예제2.c#포함하다
정수기본()
{
인쇄 ('N1<%d',1<<삼);
인쇄 ('N5<%d',5<<삼);
인쇄 ('N-5<%d', -5삼 => %NS', 40 >> 3);
printf('N40>>삼 => %NS', 40 >> 3);
printf('N-40>>삼 => %NS', -40 >> 3);
반환 0;
}
Example2.c에서 비트 시프트 연산자를 2의 거듭제곱에 대한 지수로 사용하는 방법을 보았습니다. 코드의 복잡성을 줄이는 데 매우 유용합니다.
사용자 정의 함수를 사용한 지수
지수를 계산하는 사용자 정의 함수를 작성할 수 있습니다. Example3.c에서는 사용자 정의 함수를 작성합니다. 지수(), float ant integer 유형의 exp와 두 개의 인수 기반을 취합니다.
//예제3.c#포함하다
뜨다멱지수(뜨다베이스, 정수 특급 )
{
뜨다결과=1.0;
뜨다NS;
만약( 특급 < 0)
{
특급 = -1 * 특급 ;
~을위한(NS=1;NS<= 특급 ;NS++)
결과=결과*베이스;
결과= 1.0/결과;
}
또 다른
{
~을위한(NS=1;NS%NS',지수(3,0));
printf(' exponent(삼, -5) => %NS',지수(3,-5));
printf(' exponent(-삼, -5) => %NS',지수(-3,-5));
반환 0;
}
Example3.c 우리는 사용자 정의 함수의 출력을 보았습니다. 지수() . 이 함수는 지수가 적분일 때 작동합니다. 실제 지수의 경우 다음을 사용해야 합니다. NS() 기능.
결론
이 기사에서 우리는 사용하는 것을 보았습니다. NS() 기능과 비트 시프팅 연산자 C 언어에서 지수를 계산하는 방법. 또한 지수를 계산하는 함수를 작성하는 방법도 배웠습니다. 이제 우리는 의심의 여지 없이 C 프로그램에서 이러한 기술을 사용할 수 있습니다.