Représentation et stockage des nombres

Conception logique numérique

En mathématiques, les nombres réels sont les nombres qui incluent des nombres entiers (comme 1,2,3,....), des nombres rationnels (comme ½, 0,25, 1,97, etc.) et des nombres fractionnaires irrationnels comme n, √3, etc.

Les nombres Réel peuvent être à la fois positifs, négatifs et également nuls.

Seuls √—1 et l'infini imaginaires ∞ ne sont pas des nombres réels.

Ainsi, les nombres réels incluent tous les nombres possibles nécessaires à tout type de calcul, de traitement et de toute autre activité.

Il existe deux principales représentations couramment utilisées pour les nombres réels :

Représentation en virgule fixe

Représentation en virgule flottante

Discutons de chacun d’eux un par un.

 Représentation en virgule fixe

Dans la représentation à virgule fixe des nombres réels, la position du point décimal ou du point de base (.) est fixe.

 Ce point décimal peut être situé n'importe où dans le nombre - à l'extrême droite (pour les entiers - sans partie fractionnaire) ou n'importe où au milieu (comme XXXX.YY, où X représente le nombre de chiffres à gauche du point décimal et Y représente le nombre à droite du point décimal).

Supposons que nous ayons des données de 16 bits, où la base ou le point décimal est fixé de telle sorte qu'il y ait 12 chiffres à gauche du point décimal et 4 chiffres à droite, donc les nombres (52.875)10 et (147.25)10 sont stockés comme suit :

Nombre ->(52.875)10

Conversion binaire ->( 110100.111 )2

La représentation 16 bits avec 12 bits à gauche et 4 bits à droite est :

12 bits point
décimal
4 bits
0 0 0 0 0 0 1 1 0 1 0 0 . 1 1 1 0

Numéro -> (147.25)10

Conversion binaire -> (10010011.01)2

La représentation 16 bits avec 12 bits à gauche et 4 bits à droite est :

12 bits point
décimal
4 bits
0 0 0 0 1 0 0 1 0 0 1 1 . 0 1 0 0

Quelques problèmes avec la représentation en virgule fixe

Certains problèmes avec la représentation en virgule fixe sont que parfois, lors du stockage ou représentant un nombre réel, la précision ou l'exactitude requise peut ne pas être atteinte (la définition de la précision et de l'exactitude est expliquée plus bas).

Voici quelques exemples pour montrer comment la représentation en virgule fixe parfois n'a pas la précision ou l'exactitude requise.

i. Supposons que nous ayons une représentation à virgule fixe avec un total de 8 chiffres, avec 6 chiffres à gauche du point décimal et 2 chiffres à droite du point décimal.

Supposons maintenant que nous devions représenter 452173.98467, alors le numéro sera stocké sous la forme 452173.98 (467 est perdu).

La précision est donc perdue dans ce cas.

ii. Supposons que nous ayons une représentation à virgule fixe avec un total de 16 chiffres, avec 11 chiffres à gauche et 5 chiffres à droite du point décimal.

Supposons maintenant que nous voulions stocker 45273.98467, alors celui-ci serait stocké correctement sous le nom 00000045217.98467 avec une précision et une exactitude appropriées.

Mais supposons que nous voulions stocker 19237745121110.236, le numéro serait alors stocké sous le nom 37745121110.236 (192 est perdu).

Dans ce cas, la précision est complètement perdue, ce qui entraîne le stockage d'un numéro erroné.

Voici quelques problèmes courants liés aux représentations à virgule fixe, qui peuvent être résolu en utilisant une représentation à virgule flottante.

Représentation en virgule flottante, précision, la précision est expliquée dans la section suivante.

La précision d'une valeur signifie le nombre de chiffres utilisés pour représenter ou exprimer comme valeur.

Supposons que nous ayons une valeur 73.924.

Le tableau ci-dessous représente la précision avec différents nombre de chiffres.

Tableau Représentation de la précision de la valeur 73.924 avec différents

Nombre de chiffres

Nombre de chiffres (Précision) Représentation de la valeur 73.924
5 73.924
4 73.92
3 73.9
2 73
1 7 x 10
0 N/A

Ainsi, la précision peut également être appelée répétition ou reproduction, de sorte que la valeur requise soit plus précise et comporte le moins d'erreurs.

Une valeur peut être exacte mais pas précise, précise mais pas exacte, ni l'une ni l'autre, ni les deux.

L'exactitude et la précision sont étroitement liées l'une à l'autre et jouent toutes deux un rôle important pour obtenir la bonne réponse.

Prenons un exemple.

Nous savons que la valeur de π est 3.14.

Supposons maintenant que nous utilisions 5 chiffres de précision, alors la valeur sera représentée par 3,1334, mais l'utilisation de 5 chiffres pour la précision ne joue aucun rôle dans le maintien de la précision de pi (σ), car σ est précis avec une valeur de 3.14.

Prenons encore un exemple.

Supposons que nous ajoutions 1.64 + 2.78, le résultat devrait être 4.42.

Supposons maintenant que nous n'ayons qu'une précision à deux chiffres, le résultat serait 4.4, ce qui est proche de la valeur exacte (4.42), mais pas la somme correcte de 1.64 + 2.78.

Donc avec 3 chiffres de précision nous obtiendrons la bonne réponse 4.42.

La plage est l'intervalle entre la valeur la plus petite et la plus grande.

Avec 7 bits, nous pouvons représenter 27 = 128 nombres compris entre -128 et + 127.

 Représentation des nombres à virgule flottante

La représentation des nombres à virgule flottante est une méthode qui permet aux très grands nombres (nombres avec une très grande partie intégrale) d'être de très petits nombres (nombres avec une très petite partie fractionnaire) sous la forme.

N = m x bc

Cette notation est appelée notation scientifique.

Ici,

m = mantisse ou significatif (m est la partie fractionnaire)

b = base du nombre (pour nombre décimal b = 10 pour nombre binaire b = 2 etc.)

e = exposant ou puissance (e est une partie entière)

Pour les nombres décimaux N = m x 10e

Pour les nombres binaires N = m x 2e

Pour les nombres hexadécimaux N = m x 16e

Discutons de quelques exemples.

i. Le nombre décimal 279 sera représenté par : N = 2.79 x 10²

et le nombre décimal 0.00283 sera représenté par : N = 2.83 x 10-3.

ii. Le nombre binaire 1101 sera représenté par : N = 1.101 x 2³

et le nombre binaire 0,000101 sera représenté par : N = 1,01 x 2-4

Le nombre hexadécimal 254.EEA sera représenté comme suit : N = 2.54EEA x 16²

Comme dans l'exemple (i), e = 2 donc si nous décalons la virgule décimale vers la droite de deux positions, nous obtenons 279 (2.79 x 10², déplacer la virgule décimale vers la droite de 2 positions donnera 279).

Dans l'exemple (ii), e = -3 donc si nous décalons le point décimal vers la gauche de trois positions, nous obtenons 0.00283.

Ainsi, nous pouvons dire que si l'exposant e est positif, décalez la virgule décimale vers la droite dans le nombre donné.

Si l'exposant e est négatif, déplacez la virgule décimale vers la gauche dans le nombre donné.

Normalisation :

La normalisation dans la représentation à virgule flottante signifie qu'il ne peut y avoir qu'un seul chiffre différent de zéro avant la virgule décimale (un 1 caché est supposé avant la virgule décimale).

Ou nous pouvons dire que pour un nombre à virgule flottante N = m x be (où b est la base de nombre, e est l'exposant et m est la mantisse).

Si la mantisse m a un MSB (bit le plus significatif) non nul, alors le nombre est dit normalisé.

Dans le système décimal, les chiffres non nuls sont compris entre 1 et 9.

Dans le système binaire, les chiffres non nuls sont 1.

Ainsi, le nombre sous forme normalisée peut être représenté par :

±n. xxxxxx....

Ici,

n = 1 à 9 en cas décimal

n = 1 en cas de binaire

et

x = 0 à 9 en cas décimal

x = 0 ou 1 en cas de binaire

Discutons de quelques exemples,

i. Nombre = 137.046 x 1016 en notation scientifique.

Le même nombre 137.046 x 1016 après normalisation est 1.37046 x 1018

ii. Nombre = 784.29

Après normalisation 7.8429 x 10²

iii. Le nombre binaire 1101011.001

Après normalisation 1.101011001 x 26

iv. Le nombre binaire 0.000011110101

Après normalisation 1.1110101 x 2-5

Norme IEEE-754 pour les nombres à virgule flottante

Il existe plusieurs normes définies par l'IEEE (Institute of Electrical and Electronics Engineers) pour stocker un nombre à virgule flottante dans un ordinateur.

Les deux principales normes sont :

1. Norme à virgule flottante simple précision

2. Standard à virgule flottante double précision

Discutons des deux un par un.

1. Norme à virgule flottante à simple précision

Dans la norme simple précision, le nombre a une longueur de 32 bits où 1-bit (MSB) est utilisé pour représenter le signe du nombre (positif ou négatif), 8 bits sont pour représenter l'exposant et 23 bits sont utilisés pour représenter la mantisse (nombre non signé).

Simple précision (32 bits)

Signe (S) = 1 bit
Exposant(E) = 8 bits
Mantisse(M) = 23 bits

Dans la norme IEEE 754, l'exposant est biaisé (ou nous pouvons dire qu'une représentation entière biaisée est utilisée pour le stockage des exposants), ce qui signifie qu'une constante est ajoutée à l'exposant afin que l'exposant soit toujours positif.

Pour un nombre simple précision, l'exposant E = 8 bits.

Ici, le biais utilisé est de 127.

Cela signifie que 127 est ajouté à l'exposant avant de le stocker en mémoire. Cette norme est donc aussi appelée surplus_127 puisque le biais utilisé est de 127.

Pour récupérer le nombre à virgule flottante d'origine lors de sa lecture à partir de la mémoire de l'ordinateur, nous soustrayons le biais du champ des exposants.

Exemple: stockez le nombre décimal 143.750 en utilisant la notation Excess_127.

Solution : Les étapes sont les suivantes (voir la figure ci-dessous) :

Étape 1 : Le signe du nombre donné est positif donc S = 0

Étape 2 : Convertir le nombre décimal donné en binaire 143.750 = (10001111.11)²

Étape 3 : Normalisation : (10001111.11)2 = (1.000111111)2 x 27

Étape 4 : Exposant E = 7 +127 = 134 = (10000110)2, M = 000111111 et S = 0

Ainsi, la représentation du numéro 143.750 dans Excess_127 est illustrée par la figure ci-dessous:

S E M
0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Le nombre stocké dans la mémoire de l’ordinateur est donc :

01000011000011111100000000000000.

Exemple: stockez le nombre décimal -154.875 en utilisant les notations Excess_127.

Solution :

Les étapes sont les suivantes :

Étape 1 : Le signe du nombre donné est négatif donc S = 1

Étape 2 : Convertir le nombre décimal donné en binaire

154.875 = (10011010.111)2

Étape 3 : Normalisation : (10011010.111)2 = (1.0011010111)2 x 27

Étape 4 : Exposant E = 7 +127 = 134 = (10000110)2, M = 0011010111 et S = 1

S E M
1 1 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0

2. Norme à virgule flottante double précision

Dans la norme de double précision, le nombre a une longueur de 64 bits où 1 bit (MSB) est utilisé pour représenter le signe du nombre (positif ou négatif), 11 bits sont pour représenter l'exposant et 52 bits sont utilisés pour représenter la mantisse (nombre non signé) comme montré:

Double précision (64 bits)

Signe (S) = 1 bit
Exposant(E) = 11 bits
Mantisse(M) = 52 bits

En double précision le biais utilisé est de 1023 ; c'est pourquoi cette norme est également appelée Excess_1023.

Récupération de l'équivalent décimal d'un nombre binaire stocké en virgule flottante standard IEEE pour simple précision et double précision :

Un nombre binaire stocké dans un ordinateur à l'aide de la virgule flottante standard IEEE (soit simple précision, soit double précision) peut être récupéré sous forme décimale en suivant les étapes indiquées dans les exemples suivants.

Exemple: Récupération de l'équivalent décimal du nombre binaire 11000011011101010000000000000000 stocké en simple précision (Excess_127).

Solution :

Les étapes pour récupérer l'équivalent décimal d'un nombre binaire donné sont les suivantes:
(voir la figure ci-dessous)

Étape 1 : Déterminez la valeur du signe (S), de l'exposant (E) et de la mantisse (M).

S E M
1 1 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Étape 2 : Signe (S) = 1, signifie que le nombre est négatif.

Étape 3 : Exposant (E) = exposant biaisé sur 8 bits - (127)10

[ exposant biaisé sur 8 bits = 10000110 = (134)10] = 134-127 = 7

Étape 4 : Mantisse M = 00000101110000000000000

Normalisez cette mantisse.

Ainsi, après la dénormalisation, la mantisse M est :

Ce « 1 » est implicite -> 1.00000101110000000000000 x 27

Le nombre binaire original est donc :

10000010.1110000000000000 (Décaler la virgule décimale de 7 positions vers la droite)

Ainsi, (10000010.111)2 = -(130.875)10

Exemple:

1. Montrez d'abord les étapes pour stocker le nombre décimal 311 en mémoire en utilisant la double précision (Excess_1023).

2. Affichez ensuite les étapes pour récupérer le nombre décimal 311 à partir du modèle binaire correspondant (stocké sous le formulaire Excess_1023).

Solution:

1. Les étapes pour stocker le nombre décimal 311 en mémoire en double précision (Excess_1023) sont les suivantes :

Étape 1 : Le signe du nombre donné est positif donc S = 0.

Étape 2 : Convertissez le nombre décimal donné en binaire.

311 = (100110111)2

Étape 3 : Normalisation : (100110111)2 = (1,00110111)2 x 28

Étape 4 : Exposant E = 8 +1023= 1031 = (10000000111)2, M = 00110111 et S = 0.

La représentation numérique de 311 dans Excess_1023 est illustrée à la figure ci-dessous.

S E M
0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 ...44 fois zéro

Le numéro stocké dans la mémoire de l'ordinateur est donc : 010000000111001101110000.........(44 fois zéro)

2. Maintenant, les étapes pour récupérer le nombre décimal 311 à partir du correspondant le modèle binaire 010000000111001101110000.........(44 fois zéro) est le suivant
suit :

a. Déterminez la valeur du signe (S), de l'exposant (E) et de la mantisse (M).

b. Signe (S) = 0, signifie que le nombre est positif

c. Exposant (E) = exposant biaisé sur 11 bits - (1023)10
[exposant biaisé sur 11 bits = 10000000111 = (1031)10 ] = 1031-1023 = 8

d. Mantisse M = 001101110000.........(44 fois zéro)

Dénormalisez cette mantisse.

Ainsi, après la dénormalisation, la mantisse M est :

un '1' est implicite -> 1.001101110000.........(44 fois zéro) x 28

Le nombre binaire original est donc :

100110111.0000.........(Décaler la virgule décimale de 8 positions vers la droite)

Ainsi, (100110111)2 = (311)10

 

 

 

 

 

 

 

Recherche personnalisée