構文
ダブル NS (( ダブル ベース、 ダブル exp);
NS NS() 関数はで定義されています math.h ヘッダーファイル。
引数
この関数は2つの引数を取ります。 ベース と exp、 の値を計算するには ベース の力に上げられた exp 。ここ ベース と exp どちらもダブルです。
戻り値
成功すると、 NS() 関数はの値を返します ベース の力に上げられた exp 。
の値が exp は0、 NS() 関数は1を返します。
もしも ベース 負であり、 exp 非積分であり、 NS() 関数は戻ります NaN (非数)。
例
//Example1.c#含む
#含む
int主要(()。
{{
int結果;
結果= ((int)。 NS ((3、5)。;
printf (('NSpow(3,5)=>%d '、結果)。;
printf (('NSpow(3、-5)=>%lf '、 NS ((3、-5)。)。;
printf (('NSpow(-3、-5)=>%lf '、 NS ((-3、-5)。)。;
printf (('NSpow(3,5.1)=>%lf '、 NS ((3、5.1)。)。;
printf (('NSpow(-3,5.1)=>%lf '、 NS ((-3、5.1)。)。;
printf (('NSpow(-3、-5.1)=>%lfNS'、 NS ((-3、-5.1)。)。;
戻る 0;
}
Example1.cでは、 NS() 関数。ここでは、 -lm 数学ライブラリでリンクするコマンドラインパラメータ。 10行目から13行目まで、期待どおりの出力が得られています。 14行目と15行目については、 -nan (数値ではありません)2番目の引数は整数ではないためです。
ビットシフトを使用した指数
指数を2の累乗で計算する場合は、ビットシフトを使用して計算できます。
mだけの左シフトは、最初の項に相当し、2はm乗に相当します。
NS<< m = n * pow(2、m)
mによる右シフトは、最初の項の除算に相当し、2はmの累乗に相当します。
n >> m = n / pow(2、m)
mが正の場合にのみ動作します。
//Example2.c#含む
int主要(()。
{{
printf (('NS1<%d'、1<<3)。;
printf (('NS5<%d'、5<<3)。;
printf (('NS-5<%d'、-53 => %NS'、40 >> 3);
printf( 'NS40>>3 => %NS'、40 >> 3);
printf( 'NS-40>>3 => %d n'、-40 >> 3);
0を返します。
}
Example2.cでは、ビットシフト演算子を2の累乗の指数に使用する方法を確認しました。コードの複雑さを軽減することは非常に役立ちます。
ユーザー定義関数を使用した指数
指数を計算するためのユーザー定義関数を書くことができます。 Example3.cでは、ユーザー定義関数を記述します 指数()、 これは、2つの引数に基づいており、浮動小数点整数型のexpを取ります。
//Example3.c#含む
浮く指数((浮くベース、 int exp )。
{{
浮く結果=1.0;
浮く私;
もしも(( exp < 0)。
{{
exp = -1 * exp ;
にとって((私=1;私<= exp ;私++)。
結果=結果*ベース;
結果= 1.0/結果;
}
そうしないと
{{
にとって((私=1;私%NS'、exponent(3,0));
printf( ' n指数((3、-5)。 => %NS'、exponent(3、-5));
printf( ' n指数((-3、-5)。 => %NS'、exponent(-3、-5));
0を返します。
}
Example3.cユーザー定義関数の出力を見てきました 指数() 。この関数は、指数が整数の場合に機能します。実際の指数については、 NS() 関数。
結論
この記事では、 NS() 機能と ビットシフト 演算子C言語で指数を計算する方法。また、指数を計算するための独自の関数を作成する方法も学びました。これで、これらの手法をCプログラムで間違いなく使用できるようになりました。