System.SysUtils.TSingleHelper

De Appmethod Libraries
Aller à : navigation, rechercher

Object Pascal

TSingleHelper = record helper for Single

C++

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 (Object Pascal) 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

Exemples de code