System.SysUtils.TSingleHelper

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

TSingleHelper = record helper for Single

C++

typedef void *TSingleHelper;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
helper
typedef
public
System.SysUtils.pas
System.SysUtils.hpp
System.SysUtils System.SysUtils

Beschreibung

Stellt die Unterstützung für die Durchführung von Low-Level-Operationen mit Gleitkommawerten mit einfacher Genauigkeit bereit.

Single-Zahlen werden in 32 Bit dargestellt: 1 Bit für Sign, 8 für Exponent, und 23 für Fraction. Das Bias ist 127. Unter Interne Darstellung des Typs Single finden Sie weitere Informationen.

Mit der Methode BuildUp können Sie alle Bits einer TSingleHelper-Variable mit den in Sign, Mantissa und Exponent angegebenen Werten zuweisen.

Mit den Methoden Exponent, Fraction und Mantissa von TSingleHelper können Sie auf die einzelnen Teile der Zahl zugreifen.

Hinweis: TSingleHelper bietet die Unterstützung, die früher TSingleRec bereitstellte. TSingleRec ist veraltet; verwenden Sie stattdessen TSingleHelper.

Beispiel

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;

Konsolenausgabe:

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

Die Zahl 28 wird binär als 11100 dargestellt.

Nach der Normalisierung lautet sie 1,1100 * 2^4.

Die Zahl ist positiv, daher ist Sign 0 (False).

Der Exponent ist 4 und wird mit einfacher Genauigkeit als 127 (dem Bias) + 4 = 131 dargestellt. 131 ist binär 10000011 (hexadezimal: $83).

Fraction wird in binärer Form aus den Bits nach dem Dezimalzeichen gebildet, nämlich 1100, d. h., der Wert 1 des führenden Bits wird weggelassen. Fraction wird mit 23 Bit dargestellt, daher wird die 1100-Folge bis zu 23 Stellen mit Nullen aufgefüllt:

11000000000000000000000 (hexadezimal: $600000).

Die Mantisse (Mantissa) wird aus Fraction mit dem vorangestellten Bit 1 gebildet: 111000000000000000000000 ($E00000).

Siehe auch

Codebeispiele