System.SysUtils.TSingleHelper

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

TSingleHelper = record helper for Single

C++

/*Helper*/typedef void *TSingleHelper;

プロパティ

種類 可視性 ソース ユニット
helper
typedef
public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils


説明

単精度浮動小数点値に対する低レベル演算を実行できるようにします。

Single 値は、32 ビットで表現されます: 1 ビットが Sign(符号)用、8 ビットが Exponent(指数)用、23 ビットが Fraction(少数)用です。 バイアスは 127 です。 詳細については、Internal Representation of Single Type を参照してください。

TSingleHelper 型変数のすべてのビットに、符号部仮数部指数部で与えられた値を割り当てるには、BuildUp メソッドを使用します。

TSingleHelperExponentFractionMantissa の各メソッドを使用すると、数値の構成要素に直接アクセスできます。

メモ: TSingleHelper では、これまで TSingleRec で提供されていたサポートを提供します。TSingleRec は古い仕様のものなので、代わりに TSingleHelper を使用します。

var
  aNumber: Single;
 
begin
  aNumber := 28;
  Writeln(Format('Number: %f', [aNumber]));
  Writeln(Format('Exponent: %d', [aNumber.Exp]));
  Writeln(Format('Fraction: %x', [aNumber.Frac]));
  Writeln(Format('Mantissa: %x', [aNumber.Mantissa]));
end;

コンソール出力は次のとおりです。

Number: 28.00
Exponent: 131
Fraction: 600000
Mantissa: E00000

28 という数値は、2 進法では 11100 と表されます。正規化後は 1.1100 * 2^4 になります。

これは正の数なので、符号部は 0(False)です。

指数部は 4 で、単精度で表すと 127(バイアス)+ 4 = 131 になります。131 は 2 進法では 10000011(16 進法では $83)です。

小数部は小数点記号の後のビットから 2 進形式で構成されます(つまり 1100)。先頭ビットの値 1 が省略されています。小数部は 23 ビットで表されます。そのため、1100 の続きを 23 桁になるまで 0 で埋めて、11000000000000000000000 となります(16 進法では $600000)。

仮数部小数部とその前の 1 ビットで構成され、111000000000000000000000 となります(16 進法では $E00000)。

関連項目

コード例