Nombre à virgule flottante: qu'est-ce que c'est? Expliqué simplement avec des exemples
Dans cette astuce pratique, nous vous montrons ce qu'est un nombre à virgule flottante et comment il diffère d'un nombre à virgule fixe.
Nombre à virgule flottante: qu'est-ce que c'est?
En informatique, le nombre à virgule flottante est souvent utilisé pour mesurer des appareils censés fonctionner avec une certaine précision.
- Un nombre à virgule flottante (ou "nombre à virgule flottante") est une représentation d'un nombre à l'aide de la notation exponentielle. Dans des cas exceptionnels, cela ne fonctionne qu'environ. Vous pouvez également représenter le nombre 1230000 avec le nombre 1, 23 ⋅ 10⁶.
- Le 1.23 est appelé "Mantissa". Le 10 est la "base" et le 6 est l '"exposant". Par ailleurs, un signe peut également être ajouté à la mantisse. Cependant, vous pouvez également appliquer le tout au système double. Vous pouvez également représenter le nombre 10101100 avec le nombre 1.0101100 ⋅ 2⁷. L'ordinateur ne stocke que le signe, la mantisse et l'exposant.
- Les ordinateurs déplacent généralement la virgule d'avant en arrière jusqu'à ce qu'il n'y ait qu'un 1 devant la virgule. Ensuite, le PC n'a qu'à enregistrer les décimales de la mantisse et de l'exposant.
- Pour que l'exposant puisse être enregistré sous la forme d'un nombre positif, un nombre fixe, le soi-disant biais, est ajouté. L'exposant le plus petit possible de l'endroit avant la virgule décimale (- biais) est enregistré sous la forme 0.
- Contrairement au nombre à virgule fixe, la virgule n'est pas à un point fixe dans un nombre à virgule flottante.
Half, Float & Double - Codage commun des nombres à virgule flottante
Vous êtes certainement tombé sur ces trois termes, en particulier lors de la programmation avec Arduino. Ce sont des représentations standardisées.
- Le type de données "half" est un nombre de 16 bits. Le bit le plus à gauche est responsable du signe. L'exposant a 5 bits et la mantisse 10. Le biais utilisé est de 15. Étant donné que le premier bit de la mantisse est (presque) toujours 1, cela n'est pas enregistré.
- Le type de données "float" (ou "single") est un nombre de 32 bits. Ici aussi, un peu est utilisé pour le signe. Cependant, l'exposant a 8 bits (biais = 127) et la mantisse 23.
- Le type de données "double" utilise également un bit pour le signe. Ici, cependant, l'exposant a 11 bits (biais = 1023) et la mantisse même 52 bits. Au total, cela fait 64 bits, soit 8 octets.
- En plus de ces trois types de données courants, il y en a beaucoup plus. Cependant, ceux-ci ne sont généralement pas utilisés car la précision de half, float et double est déjà assez bonne.
Convertir des nombres décimaux en nombres à virgule flottante - comment cela fonctionne
Enfin, nous aimerions vous montrer comment convertir un nombre décimal normal en nombre à virgule flottante.
- Dans cet exemple, nous utilisons le nombre décimal 18, 4. Le nombre avant la virgule décimale est d'abord transféré vers le système dual. Par conséquent, vous devriez obtenir (10010) ₂.
- Ensuite, vous devez convertir le 0.4. Multipliez d'abord le 0.4 par 2. Vous obtenez 0, 8 comme résultat. Notez le nombre avant la virgule. Dans ce cas, c'est un 0. Multipliez ensuite 0, 8 par 2. Cette fois, vous obtenez 1, 6 comme résultat. Notez le 1 et continuez à calculer avec 0, 6. Après un certain temps, vous remarquerez que le motif se répète (dans cet exemple). Enfin, notez tous les chiffres de haut en bas: 011001100110 ...
- Additionnez ensuite les chiffres: Ajoutez également (⋅ 2⁰) pour obtenir 10010.01100110 ... ⋅ 2⁰. Déplacez ensuite la virgule jusqu'à ce qu'il n'y ait qu'un 1 devant la virgule décimale, et modifiez également la puissance de manière appropriée. Par conséquent, vous devriez obtenir 1, 001001100110 ... ⋅ 2⁴, car vous avez déplacé la virgule décimale de 4 places vers la gauche. Cette étape est également appelée "normalisation".
- Dans cet exemple, nous utilisons le type de données "float". Ajoutez donc la valeur de biais appropriée à votre exposant. Vous devez également convertir le résultat du calcul 4 + 127 = 131 en nombre binaire. Le nombre 131 est le nombre 10000011 dans le système double.
- Vous pouvez maintenant noter le nombre à virgule flottante terminé. Écrivez d'abord le bit pour le signe. Puisqu'il s'agit d'un nombre positif, le premier bit est un 0. Ensuite, vous devez écrire 131. Le tout s'intègre parfaitement dans ce cas, car ce nombre nécessite 8 bits et 8 bits sont disponibles pour un flotteur. Enfin, vous devez écrire les 23 premiers bits de la mantisse, car la mantisse a 23 bits disponibles pour un flottant.
- Votre nombre à virgule flottante terminé doit donc être le numéro 01000001100100110011001100110011. Un peu plus clair est le nombre 0 | 10000011 | 00100110011001100110011.
Convertir un nombre à virgule flottante en nombre décimal - Voici comment
Enfin, nous aimerions vous montrer comment convertir à nouveau un nombre à virgule flottante en nombre décimal. Pour cela, nous prenons le numéro 1000001100100110011001100110011.
- Remplissez d'abord le numéro (avant) avec des zéros jusqu'à ce que vous obteniez un nombre de 16, 32 ou 64 bits. Dans ce cas, il s'agit du 01000001100100110011001100110011.
- Le premier chiffre représente le signe. Notre nombre est donc positif.
- Écrivez ensuite les 8 chiffres suivants (dans ce cas) et soustrayez le biais. (10000011) ₂ = 131 → 131 - 127 = 4 → Il y a donc "⋅ 2⁴" à l'arrière.
- Maintenant écrivez un "1", puis tous les nombres restants, ainsi que le "⋅ 2⁴": 1.00100110011001100110011 ⋅ 2⋅
- Déplacez ensuite la virgule de 4 positions vers la droite pour pouvoir omettre le "⋅ 2⁴": 10010.0110011001100110011
- Ensuite, convertissez 10010 en entier comme d'habitude. Vous obtenez 18.
- Vous devez maintenant convertir les décimales. Le premier chiffre après la virgule a la valeur 1: 2¹, le deuxième chiffre 1: 2² et ainsi de suite. Ajoutez les valeurs et le nombre avant la virgule vous donne le nombre 18, 3999996185302734375.
Dans le prochain conseil pratique, nous vous montrerons comment convertir des lettres ASCII en nombres binaires.