You are on page 1of 11

Chapitre 1

Les nombres ottants


Dans ce chapitre, on sintresse la reprsentation des nombres rels. Le systme dcimal originaire de linde nous a t transmis par lintermediaire des mathmaticiens arabes. On peut reprsenter un nombre dans dautres bases que le
systme dcimal. Ce chapitre est divis en deux parties. Dans la premire partie,
on traite de la reprsentation des entiers et des rels dans une base quelconque.
Dans la deuxime partie, on sintresse la reprsentation des rels sur ordinateur.
Un nombre rel peut ncessiter un nombre inni de chiffres pour sa reprsentation.
Mais un ordinateur na quune capacit nie de stockage. Cette simple remarque
implique que lon travaille toujours avec des approximations. Il faut donc veiller
ce que les approximations soient assez prcises, en dpit de quoi on peut aboutir
des erreurs consquentes.

1.1

Numrotation en base

Exercice 1. Soit un nombre entier strictement suprieur 1. Montrer que pour


tout entier n suprieur ou gal 1, il existe un unique entier p et des entiers di ,
0 i p compris entre 0 et 1, avec dp = 0 tels que
n=

i di

(1.1)

i=0

Le membre de droite de lquation (1.1) donne la reprsentation de n en base ,


galement note
n = (dp dp1 ...d1 d0 ) .
Correction
Soit n un entier suprieur ou gal 1. On sait alors quil existe un unique entier
7

8
p N tel que

CHAPITRE 1. LES NOMBRES FLOTTANTS

p n < p+1

On effectue alors la division euclidienne de n par p . Il existe un unique couple


(dp , rp ) tel que
n = d p p + rp
o dp {1, ..., 1} et rp {0, ..., p 1}. Si rp = 0 alors, cest termin, sinon,
on crit :
rp = dp1 p1 + rp1
o dp1 {0, ... 1} et rp1 {1, p1 1}.
Alors,
n = dp p + dp1 p1 + rp1
En poursuivant ainsi, on trouve nalement que
n = dp p + dp1 p1 + ... + d1 1 + r1 = dp p + dp1 p1 + ... + d1 1 + d0
.
Cette criture est unique. En effet, supposons quil y en ait deux, alors :
0=nn=

di i = 0

Ce qui est une contradiction car si I est le grand entier tel que dI = 0 alors
I >

I1

i=0

|di | i

Nous utilisons dordinaire la base 10. Cet exercice montre que lon pourrait
utiliser toute autre base. Sur ordinateur, les calculs se font en base 2 (numrotation
binaire, avec les chiffres 0 et 1), en base 8 (numrotation octale, avec les chiffres 0
7) ou en base 16 (avec les chiffres 0 9 et les lettres A F ).
Exercice 2. Soit b = (142)8 en numrotation octale, donner la reprsentation de b
en base 10 et en base 16.
Correction
(142)8 = 2 1 + 4 8 + 82
= 64 + 31 + 2
= 98 en base 10

1.1. NUMROTATION EN BASE


En base 16, on a :

16 < 98 < 162

et,

98 = 6 16 + 2

Do

b = (62)16 en base 16.

Par extension, on peut reprsenter tout nombre rel x par la somme suivante :
x=

i di

(1.2)

i=

Cependant avec cette notation un nombre entier peut avoir deux reprsentations
distinctes en base , comme le montre lexercice suivant.
Exercice 3. Soit b = 1. Montrer que dans toute base , on a :
1 = (0.bbbbb...) =

i=

Par exemple en base dix, on a :


36 = 35.9999....
En base 10, lorsque le quotient dun nombre rationnel ne tombe pas juste, sa
reprsentation est toujours priodique partir dun certain rang. Le rsultat est vrai
dans nimporte quelles base comme le montre lexercice suivant.
Exercice 4.
1. Calculer le dveloppement dcimal de 17 .
2. Soient m et n deux entiers premiers entre eux tels que m < n. On pose
r0 = m, et on dnit par rcurrence d(j+1) et r(j+1) comme tant respectivement le quotient et le reste de la division euclidienne de rj par
n:
rj = nd(j+1) + r(j+1) avec 0 r(j+1) < n.
Montrer que pour tout j 1, 0 dj < .

3. Montrer que 0.d1 d2 ... est le dveloppement de

m
n

en base .

4. Montrer quil existe deux entiers k et l tels que rk et rl sont gaux. En


dduire que le dveloppement de m
n est priodique partir dun certain rang.

10

CHAPITRE 1. LES NOMBRES FLOTTANTS

Correction
1. On a que

1
= 0, 142857142857...
7
2. Puisque m = d1 n + r1 , on a que d1 < . Sinon on aurait d1 n
n m. Par ailleurs 0 r1 < n (reste de la division euclidienne). De
mme, on a que 0 dj et 0 rj < n pour tout j N.

3. On montre par rcurrence sur i que,

i
m
ri i
dj j +
=
.
n
n
j=1

Ceci est vrai lordre 1 puisque,

m = d1 n + r1 .
Donc,

m
r1
= d1 1 +
1 .
n
n
Supposons le rsultat vrai jusqu lordre i. Montrons quil est vrai lordre
i + 1. On sait que
rj = nd(j+1) + r(j+1) ,

donc,

r(j+1) 1
rj
= d(j+1) 1 +
.
n
n
Or daprs lhypothse de rcurrence, on a :
i
ri i
m
dj j +
=
.
n
n
j=1

Donc,
i
r(i+1) 1 i
m
dj j + (d(i+1) 1 +
=
)
n
n
j=1

i+1

j=1

dj j +

r(i+1) (i+1)
.

Ce qui termine la preuve par rcurrence. Par ailleurs,


|

ri i
| i 0 quand i +.
n

1.1. NUMROTATION EN BASE

11

Finalement,

m +
dj j .
=
n
j=1

4. On sait que pour tout j N , rj {0, ..., n 1}. Donc les rj ne peuvent
prendre quun nombre ni de valeurs distinctes (au plus n). Donc il existe un
couple (k, l) tel que rk = rl . Daprs lunicit de la division euclidienne,
cela conduit la priodicit du dveloppement partir dun certain rang.
On peut noter que dans le dveloppement priodique, la squence sera dune
longeur dau plus n 1.
Exercice 5.
1. En base 10, quel nombre rationnel est gal 0,123123123...(le dveloppement est priodique de priode 123)
2. Soit N, > 1. En gnralisant le raisonnement de la question prcdente, montrer que tout nombre dont lcriture est priodique partir dun
certain rang, est gal un nombre rationnel.
Correction
1.
0, 123123123... = 0, 123

(103 )j

j=0

1
)
1 103
103
= 0, 123 3
10 1
123
=
999
41
=
333
= 0, 123 (

2. Soit x un nombre compris entre 0 et 1 dont le dveloppement en base est


priodique partir dun certain rang. Sans perte de gnralit, on suppose
que
x = (0, d1 d2 ...dq d1 d2 ...dq ...) .

12

CHAPITRE 1. LES NOMBRES FLOTTANTS


Soit v =

i=1 di

i .

Alors,
x=v

( q )j

j=0

1
1 q
q v
= q
1
=v

1.2

Reprsentation des nombres en machine

Sur machine on reprsente lensemble des nombres rels par les ottants (oat)
ou nombres virgule ottante. Lensemble de ces nombres est dcrit par une base
, un nombre r de chiffres signicatifs, et deux entiers e et e+ . Tout nombre
virgule ottante est de la forme :
s(m) j
o j est compris entre e et e+ , m est la mantisse code sur r chiffres signicatifs
et s dsigne le signe du nombre. On adjoint ce systme le nombre 0. Il convient de
remarquer quavec cette reprsentation un nombre peut tre crit de plusieurs manires. Ainsi pour = 10 et r = 5, on a , 34562 101 = 3, 4562 = 34562 104 .
Pour avoir lunicit de la notation, on xe par convention la place de la virgule dans
la mantisse. Gnralement la virgule peut se situer juste aprs le premier chiffre non
nul de la mantisse, juste avant, ou ne pas avoir de virgule. On dnit ainsi un ensemble ni de nombres, not F(, r, e , e+ ) qui vont reprsenter lensemble des
rels. La norme IEEE754 (1985) a dnit 4 standards de nombres ottants (simple
prcision, simple prcision tendue devenu obsolte, double prcision, double prcision tendue). La reprsentation simple prcision est code sur 32 bits tandis que
la double prcision est code sur 64 bits. Pour donner un exemple, le type oat du
langage C est de type simple prcision tandis que le type double est de type double
prcision.
Le format simple prcision
Dans le format simple prcision, on a = 2, e = 126, e+ = 127, lexposant
est cod sur 8 bits, la mantisse m sur 23 bits et le signe sur un bit. Le bit de signe
est 1 si le chiffre est ngatif, 0 si le chiffre est positif. La virgule dans la mantisse
est place juste aprs le premier chiffre non nul. Comme on est en base 2, il ny a
pas ncessit de coder ce chiffre qui est ncessairement gal 1. Ceci est lcriture
dite normalise. Ainsi le plus petit nombre normalis est gal :

1.2. REPRSENTATION DES NOMBRES EN MACHINE

13

signe exposant mantisse


1bit
8bits
23bits
F IGURE 1.1 Le format simple prcision
Format
Simple
Double

taille
32
64

r
23
52

e
-126
-1022

e+
127
1023

Nombre normalis minimum


1.175... 1038
1.112... 10308

Nombre normalis maximum


3.048... 1038
1.797... 10308

F IGURE 1.2 Les formats simple et double prcicions


2126 1.17549449095 1038 ,
et le plus grand nombre normalis est gal :
2127 (2 223 ) 3.40282326356 1038 .
En plus des nombres normaliss, la norme dnit galement les valeurs +, , N aN (Nota-Number) et des nombres dnormaliss. Les nombres dnormaliss sont utiliss
pour reprsenter des nombres trs petits. Dans ce cas, le nombre situ avant la virgule est nul. Ces informations sont codes grce lexposant. Ainsi comme on la
vu, huit bits sont utiliss pour lexposant. Pour huit bits, il y a 28 = 256 nombres
diffrents. Pourtant, on a vu que lexposant variait de 126 127 soit 254 nombres.
En fait, la valeur dexposant 127 est utilise pour dsigner un nombre dnormalis. La valeur 128 est utilise pour reprsenter les valeurs +, , N aN . Enn
pour reprsenter les valeurs ngatives en binaire, lexposant est reprsent dcal
de +127. Cest dire que lexposant 127 sera reprsent par la valeur 0 en binaire, 126 sera reprsent par la valeur 1 en binaire,..., 128 sera reprsent par la
valeur 255 en binaire. Si lexposant vaut 127 et si la mantisse est nulle, cest le
nombre 0 qui est reprsent. Il y a donc un 0+ et un 0 selon le bit de signe. Si
lexposant vaut 127 et si la mantisse est non nulle, cest le nombre dnormalis
qui est reprsent. Ainsi le plus petit nombre dnormalis vaut :
2126 223 = 2149 1.40129846432 1045 .
Remarquez que bien que la valeur de lexposant soit 127 on conserve 126 pour
le calcul pour assurer la continuit avec les nombres normaliss. Si lexposant vaut
+128, et si la mantisse est nulle, cest les valeurs + et qui sont reprsentes.
Enn si lexposant vaut +128, et si la mantisse est non nulle cest le N aN qui est
reprsent.

14

CHAPITRE 1. LES NOMBRES FLOTTANTS

Quelques erreurs en arithmtique ottante clbres

Le crash dAriane 5
Le quatre juin 1996, cest une erreur de programmation qui a caus le crash de la
fuse europenne Ariane 5. Plus prcisment, un rel cod sur 64 bits donnant la
vitesse horizontale de la fuse tait converti en un entier sign sur 16 bits. Or lentier obtenu tait plus grand que 32767 = 215 1, le plus grand entier reprsentable
sur 16 bits. La convertion chouait donc. Tous les tests logiciels avaient pourtant
russi, mais ils avaient t effectus avec les donnes dAriane 4 pour laquelle la
vitesse horizontale restait infrieure au maximum de 32767.
Lanti-missile manque sa cible
Pendant la guerre du Golfe, un anti-missile Patriot tir de Dahran (Arabie Saoudite) a manqu linterception dun missile irakien Scud. Ce dernier a tu 28 soldats
et bless quelque cent autres personnes. Lerreur a dcoul dune imprcision dans
le calcul de la date de lanti-missile Patriot. Celui-ci dispose en effet dun processeur interne, qui calcule lheure en multiples de diximes de secondes. Le nombre
de diximes de secondes depuis le dmarrage du processeur est stock dans un
1
registre entier, puis multipli par une approximation sur 24 bits de 10
pour obte1
nir le temps en secondes. Or lcriture de 10 en base 2 est innie puisque lon a
1
)10 = 214 + 215 + 218 + 219 + ..... Lapproximation de 0.1 sur 24 bits stocke valait
( 10
1
1
+ 215 + 218 + 219 + ... + 221
. Cela donne une erreur denviron 9.5 108 . Le
24
processeur du missile ayant t dmarr une centaine dheures auparavant, lerreur
totale tait donc de 0,34 secondes (100 36000 0.95 10 7). Sachant quun
missile scud parcourt 1676 mtres par seconde, le missile Scud parcourt plus de
500 mtres en 0,34 secondes.

Exercice 6. On choisit = 2, r = 3, e = 1 et e+ = 2. On suppose que la


virgule est place juste aprs le premier chiffre non nul. Donner la valeur en base
de 10 de tous les nombres ottants normaliss de ce systme, et les dessiner sur un
segment de droite centr en zro.
Mme question pour les nombres dnormaliss (avec j = 1).
Correction
Le diffrents nombres normaliss sont reprsents ci-dessous :

1.2. REPRSENTATION DES NOMBRES EN MACHINE


Mantisse
000
001
010
011
100
101
110
111

j = 1
1/2
9/16
10/16
11/16
12/16
13/16
14/16
15/16

j=0
1
9/8
10/8
11/8
12/8
13/8
14/8
15/8

j=1
2
9/4
10/4
11/4
12/4
13/4
14/4
15/4

15

j=2
4
9/2
10/2
11/2
12/2
13/2
14/2
15/2

Pour j = 1, les nombres dnormaliss sont :


Mantisse
000
001
010
011
100
101
110
111

j = 1
0
1/16
2/16
3/16
4/16
5/16
6/16
7/16

On dnit maintenant lapplication arrondi A qui est lapproximation dans F(, r, e , e+ )


dun rel quelconque : pour tout x R, soit [f, f ] le plus petit intervalle contenant
x tel que f et f appartiennent F (, r, e , e+ ). Alors A(x) est gal celui qui
est le plus proche de x. Si f et f sont quidistants de x, alors A(x) sera dtermin
de diverses manires qui dpend de la machine utilise. Par exemple en base 2, on
peut choisir, le nombre pair (dernier bit 0) entre f et f . On dnit galement les
oprations mathmatiques sur les otants en posant :
f f = A(f + f )

f f = A(f f )
f f = A(f f )

f f = A(f /f )
Exercice 7.

16

CHAPITRE 1. LES NOMBRES FLOTTANTS


1. Calculer A( 13 ) dans le systme F(2, 3, 1, 2)

2. calculer :

1
1
1
1
et 1 .
16 8
8 16

Que remarquez vous ?


Correction
1. On a :

2.

donc A( 13 ) =

15
1
18
< < ,
48
3
48
5
16

(si lon inclut les nombres dnormaliss.

1
1
7
1
1
15
= et 1
= .
16 8
8
8 16
16
On en dduit que laddition nest pas commutative.
1

1.2. REPRSENTATION DES NOMBRES EN MACHINE

17

L2, 2012-2013. Mthodes numriques

Universit du Havre

Feuille de TP 1
Exercice 1. Dterminer le systme F(, r, e , e+ ) utilis par Scilab pour la reprsentation des nombres ottants.
Exercice 2. Soit lquation du second degr :
p(x) = x2 160x + 1 = 0

(1.3)

1. Calculer numriquement les valeurs x1 et x2 (x1 < x2 ) des deux solutions


de lquation en utilisant les formules usuelles.
2. Calculer p(x1 ) et p(x2 ). Que constatez vous ?
3. Dterminer la nouvelle valeur numrique x
1 en utilisant
x
1 =

1
.
x2

Calculer p(
x1 ). Que constatez vous ?
4. Pouvez-vous proposer une explication de ce phnomne ?
Exercice 3. Un calcul approch de
1. Montrer que :

lim n sin( ) = .
n

n+

2. On pose

).
2k
Montrer que pour tout nombre rel compris entre 0 et
xk = 2k sin(

sin( ) =
2

et en dduire que
xk+1 = 2

1
1 1 sin2
2

2 1

1 (xk /2k )2 .

on a

You might also like