System.SysUtils.TSingleHelper
Delphi
TSingleHelper = record helper for Single
C++
struct TSingleHelper /* Helper for real 'float' */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
helper class |
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 メソッドを使用します。
TSingleHelper の Exponent、Fraction、Mantissa の各メソッドを使用すると、数値の構成要素に直接アクセスできます。
メモ: 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)。
関連項目
- System.Single
- System.SysUtils.TDoubleHelper
- System.SysUtils.TExtendedHelper
- System.SysUtils.TSingleHelper.Sign
- System.SysUtils.TSingleHelper.Frac
- System.SysUtils.TSingleHelper.Exp
- System.SysUtils.TSingleHelper.BuildUp
- System.SysUtils.TSingleHelper.Exponent
- System.SysUtils.TSingleHelper.Fraction
- System.SysUtils.TSingleHelper.Mantissa
- System.TSingleRec