#C 言語の固定使用法とは、固定小数点数を使用して浮動小数点数を表現するテクノロジを指します。多くの組み込みシステムでは、ハードウェア リソースが限られているため、浮動小数点演算はサポートできませんが、いくつかの複雑な計算を実行する必要があります。このとき、浮動小数点演算の代わりに固定演算子を使用できます。 fixed は、浮動小数点数を整数と固定小数点以下の桁数として表現する固定小数点数表現方法です。通常、Q16.16形式で表現される固定値は、16ビット整数や16ビット小数など、小数点以下の桁数が固定されています。このようにして、浮動小数点演算の代わりに整数演算を使用できるため、計算効率が向上します。 C 言語では、整数型を使用して固定値を表すことができます。一般に、固定値を表すには int 型を使用できますが、計算を容易にし、オーバーフローを回避するために、typedef キーワードを使用して fix_t という名前の新しい型を定義するなど、固定値を表す新しい型を定義できます。 以下は、固定値を定義して使用する方法を示すサンプル コードです。C 言語の固定使用法とは、固定小数点数を使用して浮動小数点数を表現するテクノロジを指します。多くの組み込みシステムでは、ハードウェア リソースが限られているため、浮動小数点演算はサポートできませんが、一部の複雑な計算はサポートされません。が必要な場合は、計算に浮動小数点数の代わりに固定小数点数を使用できます。 fix は、浮動小数点数を整数と固定小数点以下の桁数として表現する固定小数点数表現方法です。通常、固定数の小数点以下の桁数は固定されています。
#include <stdio.h> typedef int fixed_t; #define FIXED_BITS 16 #define FIXED_SCALE (1 << FIXED_BITS) fixed_t float_to_fixed(float f) { return (fixed_t)(f * FIXED_SCALE); } float fixed_to_float(fixed_t fixed) { return (float)fixed / FIXED_SCALE; } fixed_t fixed_add(fixed_t a, fixed_t b) { return a + b; } fixed_t fixed_sub(fixed_t a, fixed_t b) { return a - b; } fixed_t fixed_mul(fixed_t a, fixed_t b) { return (fixed_t)(((int64_t)a * b) >> FIXED_BITS); } fixed_t fixed_div(fixed_t a, fixed_t b) { return (fixed_t)(((int64_t)a << FIXED_BITS) / b); } int main() { float a = 1.5; float b = 2.3; fixed_t fixed_a = float_to_fixed(a); fixed_t fixed_b = float_to_fixed(b); fixed_t fixed_sum = fixed_add(fixed_a, fixed_b); fixed_t fixed_diff = fixed_sub(fixed_a, fixed_b); fixed_t fixed_product = fixed_mul(fixed_a, fixed_b); fixed_t fixed_quotient = fixed_div(fixed_a, fixed_b); printf("a + b = %f\n", fixed_to_float(fixed_sum)); printf("a - b = %f\n", fixed_to_float(fixed_diff)); printf("a * b = %f\n", fixed_to_float(fixed_product)); printf("a / b = %f\n", fixed_to_float(fixed_quotient)); return 0; }
以上がC言語でのfixedの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。