NOMBRES - Curiosités, théorie et usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 24/02/2019

Orientation générale        DicoMot Math          Atlas                   Références                     M'écrire

Barre de recherche          DicoCulture              Index alphabétique                      Brèves de Maths

     

NOMBRES

 

Débutants

Nombres

Représentation

 

Glossaire

Nombres

 

 

INDEX

 

Numération

 

Décimal

En chiffres

Bloc de 3 chiffres

Scientifique

En lettres

Préfixes

Fixe-flottant

Alphabétique

Barres

 

Sommaire de cette page

>>> Format fixe

>>> Format flottant

>>> Codage 32 bits et 64 bits

>>> Exemple de codage: nombre entier

>>> Exemple de codage: nombre décimaux

>>> Valeurs en  flottant

>>> Opérations en virgule flottante

>>> Puissance de calcul

 

 

 

 

 

CODAGE DES NOMBRES

dans les ordinateurs

 

Comment indiquer un très grand nombre (ou un très petit) à un ordinateur, par exemple ? Pour un traitement numérique, d'une manière générale.

Comment réaliser des opérations avec de tels nombres?

Le seul but de cette page est de vous donner quelques principes. Si vous devez pratiquer le codage en virgule flottante, référez-vous à la norme prévue pour votre application. 

 

 

 

FORMAT FIXE (binaire)

 

Entier

 

*    Prenons l'exemple d'un ordinateur qui réserverait 16 bits pour coder un nombre.

*    Une succession de 16 chiffres (bits) tous à 1, convertis en décimal donnerait:

1111 1111 1111 1111 Base 2 =  65 535 Base 10 = 216 – 1.

 

En règle générale, le plus grand nombre que l'on peut coder avec n bits est:   2n – 1.

 

 

Codage

 

*    Le bit à droite est dit de poids faible (LSB: least significant bit);
L'avant-dernier à gauche est celui de poids fort (MSB: most significant bit);
Le dernier à gauche est le bit de signe.
 

 

Positif et négatif

 

*    Les nombres positifs sont codés normalement; tandis que les nombres négatifs sont codés selon leur complément à deux.

*    En pratique, voici ce qu'il faut faire avec 21 par exemple: coder, inverser, ajouter 1. Pour passer du négatif au positif: inverser et ajouter 1.

 

Voir Explications plus détaillées

 

 

 

 

FORMAT FLOTTANT (binaire)

 

*    Nous connaissons la notation scientifique qui normalise tous les nombres décimaux avec une mantisse comprise entre 1 et 9,999… et une puissance de dix restituant la grandeur du nombre.

*    Nous connaissons également la limitation des nombres codés en binaire sur un certain nombre de bits. Que faire si le nombre à coder dépasse? Pourquoi ne pas se diriger vers une sorte de notation scientifique pour binaire: c'est le format flottant.

 

 

Exemples

300 000 = 0,3 106

0,3 est la mantisse (ou significande)

6     est l'exposant.

 

 

Avec 16 bits, codage des nombres

de - 32 768 à 32 767 

 

La notation est dite flottante car elle consiste à faire glisser les nombres significatifs à droite ou à gauche de sorte que le nombre tienne dans le format.

 

*    La notation flottante comprend trois composantes:

*      le signe

*      le significande (aussi appelé mantisse), et

*      l'exposant de la puissance de 2.

*    Le significande est exprimé en binaire complémenté à deux pour les nombres négatifs.

 

 

Le nombre 0 est représenté par tous les bits à 0.

Un décalage du nombre vers la gauche correspond à une multiplication par 2 du nombre; et vers la droite, à une division par 2.

La normalisation consiste à décaler le nombre jusqu'à obtenir un significande compris entre 1/2 et 1. De sorte que le premier bit est toujours égal à 1. Pas besoin de le mémoriser. Il est implicite.

 

*    Les nombres décimaux convertis en binaire  peuvent conduire à des surprises. Alors méfiance!

*    Erreurs d'arrondis qui peuvent se propager lors de longs calculs.

 

Après calculs divers un 3 peut se retrouver sous la forme 2,9999991.

 

 

FORMAT FLOTTANT 32 et 64 bits

 

Exemple de codage sur 32 bits

 

Caractéristiques

 

 

 

Exemples de codage – Nombre entier 12

 

Nombre 12 en binaire flottant

 

*    Notez qu'il s'agit d'un exemple de codage. Si vous devez effectuer un codage, référez vous aux normes en vigueur dans le cadre de vos applications. Ici, par exemple, la norme indique d'ajouter 3 aux exposants pour 8 bits. Pour un codage sur 32 bits la norme exige d'ajouter 8. Voir les sites en références

 

 

Nombre –12 en binaire flottant: deux façons de coder le négatif

 

Voir Complément à deux

 

Exemples de codage – Nombres décimaux

 

 

 

Codage de quelques nombres sur 32 bits

 

 

En décimal, le plus grand nombre vaut: (2128 – 2104) =

340 282 346 638 528 859 811 704 183 484 516 925 440,0

 

Pour compléments d'informations sur le codage voir le site

IEEE floating-point representations of real numbers

 

Voir Pi / Zéro / infini / Grands nombres

 

 

OPÉRATIONS EN VIRGULE FLOTTANTE – ADDITION

Notations

 

 

 

 

Formelle

Flottant

Classique

Soit deux nombres à ajouter

x, y

0,912 345 E5

0,512 345 E2

91 234, 5

51, 2345

et le résultat cherché

z = x + y

 

91 234, 5

+    51, 2345

91 285, 7345

Les mantisses

fx, fy, fz

fx = 0,912 345

fy = 0,512 345

 

Les exposants

Ex, Ey, Ez

Ex = 5

Ey = 2

 

Algorithme

Prendre le plus grand des exposants

Supposons Ex  Ey

Ez = Ex

Ez = 5

 

Cadrer avec le même exposant

=> Décaler le plus petit de

Ex – Ey

Ex – Ey = 3

 fy = 0,000 512 345

 

Ajouter

fz = fx  + fy

fx = 0,912 345

fy = 0,000 512 345

fz = 0,912 857 345

 

Si fz est plus grand que 1 en valeur absolue

=> décaler fz de 1 cran vers la gauche et augmenter Ez de 1

 

 

 

Soit la somme cherchée

z = fz Ez

z = 0,912 857 E5

91 285,7

 

 

OPÉRATIONS EN VIRGULE FLOTTANTE – SOUSTRACTION

Notations

 

 

 

 

Formelle

Flottant

Classique

Soit deux nombres à soustraire

x, y

0,999 658 E-3

E-3

 

et le résultat cherché

z = x - y

 

0,000 999 658

0,000 994 576

0,000 005 082

Les mantisses

fx, fy, fz

fx = 0,999 658

fy = 0,994 576

 

Les exposants

Ex, Ey, Ez

Ex = -3

Ey = -3

 

Algorithme

Prendre le plus grand des exposants

Supposons Ex  Ey

Ez = Ex

Ez = -3

 

Cadrer avec le même exposant

=> Décaler le plus petit de

Ex – Ey

Ex – Ey = 0

 fy = 0,994 576

 

Ajouter

fz = fx  + fy

fx = 0,999 658

fy = 0,994 576

fz = 0,005 082

 

Si fz est plus petit que 0,1

=> décaler fz de n crans vers la gauche et augmenter Ez de n

 

fz = 0,508 2

Ez = -5

 

Soit la somme cherchée

z = fz Ez

z = 0,508 2 E-5

0,000 005 082

 

 

OPÉRATIONS EN VIRGULE FLOTTANTE – MULTIPLICATION

Notations

 

 

 

 

Formelle

Flottant

Classique

Soit deux nombres à multiplier

x, y

0,2 E4

0,4 E-2

2000 = 2 103

0,004 = 4 10-3

Algorithme

Multiplier les mantisses

fz = fx  . fy

0,2 x 0,4 = 0, 08

 

Ajouter les exposants

Ez = Ex  + Ey

4 + (-2) = 2

 

Valeur du produit cherché

z = fz Ez

0,08 E2

 

Normalisation

 

0,8 E1

0,8 101 = 8

 

 

OPÉRATIONS EN VIRGULE FLOTTANTE – DIVISION

Notations

 

 

 

 

Formelle

Flottant

Classique

Soit deux nombres à diviser

x, y

0,886 E-5

0,2 E-3

0,886 10-5

0,2 10-3

Algorithme

Diviser les mantisses

fz = fx  / fy

0,886 / 0,2 = 4,43

 

Soustraire les exposants

Ez = Ex  - Ey

-5 - (-3) = - 2

 

Valeur du quotient cherché

z = fz Ez

4,43 E-2

 

Normalisation

 

0,443 E-1

4,43 10-2

 

Voir Les quatre opérations

 

 

PUISSANCE DE CALCUL

Algorithmes – Instructions

Calculs – Opérations

Ips

Instructions par seconde

Ops

Opérations par secondes.

Flops

Opérations flottantes par secondes

(floating operations per second).

Mips

Méga (Million) Instructions par seconde

Mops

Mflops

Gops

Gflops

Méga et Giga opérations flottantes ou non par secondes.

Voir Puissance de calcul des ordinateurs / Loi de Moore et performances actuelles des micropocesseurs

 

 

 

Suite

*         Nombres en lettres

*         Algorithmes pour la Division

Voir

*         Arrondis

*         Calcul mental

*         Conversion

*         Décomposition des nombres

*         Géométrie

*         Inventaire des nombres

*         Nom de nombres

*         Supercalculateurs

*         Théorie des nombres

Sites

*           La représentation en virgule flottante  - Par Jean-Michel JOLION de l'INSA

*           Cours sur la virgule flottante (pdf) de Alain Guyot (pour ceux qui veulent approfondir)

*           Floating-point numbers or Why don’t my numbers add up - Simple à l'américaine

*           Floating-Point Number Tutorial

*           The IEEE standard for floating point arithmetic

Cette page

http://villemin.gerard.free.fr/Wwwgvmm/Numerati/FixeFlot.htm