System.SysUtils.TSingleHelper
Delphi
TSingleHelper = record helper for Single
C++
/*Helper*/typedef void *TSingleHelper;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
helper typedef |
public | System.SysUtils.pas System.SysUtils.hpp |
System.SysUtils | System.SysUtils |
Description
Fournit la prise en charge pour l'exécution des opérations de bas niveau sur les valeurs à virgule flottante en simple précision.
Les nombres de type Single sont représentés sur 32 bits : 1 bit pour le signe, 8 pour l'exposant, et 23 pour la fraction. Le biais est de 127. Voir Formats de données internes (Delphi) pour plus d'informations.
Pour assigner tous les bits d'une variable TSingleHelper aux valeurs données par Sign, Mantissa et Exponent, utilisez la méthode BuildUp.
Les méthodes Exponent, Fraction et Mantissa de TSingleHelper fournissent l'accès aux parties brutes du nombre.
Remarque : TSingleHelper offre le support que TSingleRec offrait précédemment. TSingleRec est obsolète ; utilisez TSingleHelper à la place.
Exemple
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;
Sortie console :
Number: 28.00 Exponent: 131 Fraction: 600000 Mantissa: E00000
Le nombre 28 est représenté en binaire par 11100. Après la normalisation, c'est 1.1100 * 2^4.
Le nombre est positif, donc Sign vaut 0 (False).
L'exposant vaut 4, représenté en simple précision en tant que 127 (le biais) + 4 = 131. 131 est représenté par 10000011 ($83 en hexadécimal) en binaire.
La fraction est formée à partir des bits après le séparateur décimal en format binaire, à savoir 1100, c'est-à-dire que la valeur de 1 du bit de début est omise. La fraction est représentée sur 23 bits, nous complétons ainsi la séquence 1100 jusqu'à 23 chiffres avec des zéros : 11000000000000000000000 ($600000 en hexadécimal).
La mantisse est formée à partir de la fraction avec 1 bit avant : 111000000000000000000000 ($E00000).
Voir aussi
- 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