10
Nombres relatifs Nombres relatifs L'opposé d'un nombre x est, par définition, le nombre y tel que x + y = 0 On le note -x ; soit : y = -x ; ou encore : x + (-x) = 0 Une difficulté apparaît dans toutes les opérations faites avec des nombres binaires sur les calculateurs numériques réels : les nombres binaires y ont un nombre de chiffres fixe (soit 8 soit16 soit 32 soit 64 bits généralement suivant les processeurs). C'est cette même limitation qui apparaît sur les compteurs kilométriques de véhicules. Limités par exemple à six chiffres, lorsque le comteur arrive à 999 999, il retombe à 000 000. Tout ce qui va être dit sur les opérations mathématiques suppose que les opérations se font sans dépassement de la valeur maximale que peut prendre les format binaire choisi (nombre maximum de bits). Si les nombres manipulés dépassent cette valeur il faudra avoir recours à un nombre supérieur de bits pour représenter les nombres. Pour simplifier, nous allons partir de nombres de 4 bits.Les nombres extrêmes dans ce format sont 0000 et 1111, soit en décimal : 0 et 15. Ce sont des entiers positifs.. Il exsite deux manières d'écrire dans ce format à la fois des nombres positifs et leurs opposés : Convention dite du "bit de signe". Convention dite du "complément à deux". Convention dite " à Bit de signe" Le le bit le plus signifiant (bit de gauche) représente le signe : 0 pour "plus" et 1 pour "moins". La valeur absolue est donnée par le reste des bits. Exemple : Binaire 4 Bits Décimal 0111 + 7 0110 + 6 0101 + 5 0100 + 4 0011 + 3 0010 + 2 0001 + 1 0000 + 0 1 / 10

Nombres relatifs (VIRGULE FLOTTANTE)

Embed Size (px)

Citation preview

Page 1: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Nombres relatifs

L'opposé d'un nombre x est, par définition, le nombre y tel que x + y = 0On le note -x ; soit : y = -x ; ou encore : x + (-x) = 0

Une difficulté apparaît dans toutes les opérations faites avec des nombres binaires sur les calculateurs numériques réels : les nombres binaires y ont un nombre de chiffres fixe (soit 8 soit16 soit 32 soit 64 bits généralement suivant les processeurs).

C'est cette même limitation qui apparaît sur les compteurs kilométriques de véhicules. Limités par exemple à six chiffres, lorsque le comteur arrive à 999 999, il retombe à 000 000.

Tout ce qui va être dit sur les opérations mathématiques suppose que les opérations se font sans dépassement de la valeur maximale que peut prendre les format binaire choisi (nombre maximum de bits).

Si les nombres manipulés dépassent cette valeur il faudra avoir recours à un nombre supérieur de bits pour représenter les nombres.

Pour simplifier, nous allons partir de nombres de 4 bits.Les nombres extrêmes dans ce format sont 0000 et 1111, soit en décimal : 0 et 15. Ce sont des entiers positifs..Il exsite deux manières d'écrire dans ce format à la fois des nombres positifs et leurs opposés :

Convention dite du "bit de signe". Convention dite du "complément à deux".

Convention dite " à Bit de signe"

Le le bit le plus signifiant (bit de gauche) représente le signe : 0 pour "plus" et 1 pour "moins". La valeur absolue est donnée par le reste des bits.

Exemple :

Binaire 4 Bits Décimal0111 + 70110 + 60101 + 50100 + 40011 + 30010 + 20001 + 10000 + 01000 - 01001 - 11010 - 21011 - 31100 - 41101 - 51110 - 61111 - 7

Cette méthode semble très simple.Pour n bits les valeurs extrêmes sont : 2( n - 1 ) - 1On peut écrire autant de positifs que de négatifs.

1 / 8

Page 2: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Convention dite du "Complément à deux"

C'est la convention la plus utilisée.

Les nombres dont le bit le plus signifiant (bit de gauche) est à zéro sont considérés comme positifs. Leurs opposés s'obtiennent par l'opération (toute naturelle) suivante : opposé = 0 - nombre

Ou encore : (-x) = 0 - x ; étant bien entendu que l'on reste à l'intérieur du format(c.a.d. que l'on ignore les bits de dépassement dans l'opération)

Exemples :

Binaire 4 Bits Décimal Remarques

Zéro 0000 0  Nombre x 0101 + 5  

- x 1011 - 5 Par définition

N.B. La soustraction binaire se fait comme la décimale : avec retenues et reports.

Exemple :En soustrayant les bits à droite de 0000 - 0101on déclare : 0 - 1 = 1 je retiens 1 que je reporte sur le zéro suivant de 0000,et ainsi de suite ...Arrivés au bit le plus à gauche, 1 + 1 = 0 je retiens 1que je ne reporte pas puisque je sors du format 4 bits.

On peut ainsi construire le tableau suivant :

Binaire Décimal Hexadécimal0111 + 7 70110 + 6 60101 + 5 50100 + 4 40011 + 3 30010 + 2 20001 + 1 10000 0 01111 - 1 F1110 - 2 E1101 - 3 D1100 - 4 C1011 - 5 B1010 - 6 A1001 - 7 91000 - 8 8

Ce code est moins directement compréhensible pour les nombres négatifs,mais les opérations se font de la même manière pour les positifs comme pour les négatifs(ce qui est primordial pour les processeurs de calcul).

Binaire 4 Bits Décimal

Nombre 1 0100 + 4

2 / 8

Page 3: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Nombre 2 1101 - 3 Voir tableau précédentSomme 0001 + 1 Exact !

Avec 8 bits :

Binaire Décimal Hexadécimal0111 1111 + 127 7F0111 1110 + 126 7E

... ... ...0000 0001 + 1 10000 0000 0 01111 1111 - 1 FF1111 1110 - 2 FE

... ... ...1000 0001 - 127 811000 0000 - 128 80

Avec 16 bits :

Binaire Décimal Hexadécimal Formules0111 1111 1111 1111 + 32 767 7FFF 2(16-1)- 1

0111 1111 1111 1110 + 32 766 7FFE

... ... ...

0000 0000 0000 0001 + 1 1

0000 0000 0000 0000 0 0

1111 1111 1111 1111 - 1 FFFF

1111 1111 1111 1110 - 2 FFFE

... ... ...

1000 0000 0000 0001 - 32 767 81 - 2(16-1)+ 11000 0000 0000 0000 - 32 738 80 - 2(16-1)

Lorsque l'on écrit un nombre binaire pourvant premdre des valeurs positives ou négatives (entier relatif), il est indispensable d'en préciser le format (nombre de bits) dans lequel il est écrit.

Exemple: Le nombre 1111 représente, en écriture décimale :

le nombre entier 15 si on le considère comme écrit en binaire naturel ; quel que soit le format. le relatif - 1 si on le considère écrit en binaire 4 bits convention du complément à deux; le relatif - 7 si on le considère écrit en binaire 4 bits convention du bit de signe; le nombre relatif + 7 si on le considère écrit en binaire 16 bits convention du complément à deux.

Technique particulière

Pour obtenir l'opposé d'un nombre écrit en binaire relatif dans la convention du complément à deux on change tous ses bits et on ajoute un. Il faut bien entendu opérer dans le format complet.

Exemple :En binaire, dans la convention du complément à deux et sous format 4 bits, n = 101 Quel est son opposé ?

D'abord, faisons apparaître le format complet : n = 0101Changeons tous ses bits : 1010Ajoutons 1 : 1011

3 / 8

Page 4: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Vérifions sur le tebleau situé plus haut dans cette pageque n = 101 = 5 et que 1011 = -5

Cette technique peut être mise à profit dans certains opérateurs de calculou pour simplifier la recherche de la valeur absolue d'un nombre négatif donné en binaire...

Représentation binaire des Nombres Réels

Représentation à "virgule fixe"

A l'instar de la définition des nombres binaires naturels,nous pourrions définir un réel positif par une convention du même type :

Exemple : le nombre 1010,101 peut représenter la somme suivante :

Soit, en écriture décimale : 8 + 2+ 0,5 + 0,125 = 10,625

Sous une autre forme :

On peut rigoureusement démonter que tout nombre réel positif pourrait ainsi écrit de cette manière.Resterait à décrire le signe, ce qui peut être fait par un bit particulier (bit de signe)ou par une convention de type complément à deux.Beaucoup de ces variantes ont été utilisées dans les calculateurs.

Exemple du calcul inverse : traduire en binaire le nombre 78,347

Partie entière : 78

Nous opérons une suite de divisions par 2 et retenons les divers restes.Ces restes sont repris à l'envers

Partie non entière : 0,347

4 / 8

Page 5: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Résultat final :

78,347 écrit en décimal représente 1001110,0101100011 écrit en binaire à moins de 2 -11 près

 Reste cependant que cette méthode est souvent dispendieuse en nombre de bits !

Imaginons que l'on veuille écrire tous les réels de 0 à 65 635.Le sous-ensemble d'entiers de cet intervalle s'écrit sous 16 bits : 216 = 65 536.Si la précision maximale que nous voulons atteindre est seulement de 1/216-1 = 1/65 535Nous devrons écrire seize chiffres après la virgule ; exemple 1010 0101 1100 1111,0110 1110 1101 0111

Pour de petits nombres, il y gaspillage de bits à gauche de la virgule : 101,001001100Pour des nombres à peu de décimales, il y aura gaspillage de bits après la virgule : 1100 1111,01

Néanmoins ce système est réellement employé dans certains types de calculateurs.

Représentation "à virgule flottante"

Rappelons ce qu'est la notation scientifique des nombres réels :

En "notation scientifique" dite "à virgule flottante"

- 0,006234 s'écrit - 6.234 e - 3 ou - 6.234 E - 3

Cette notation est l'équivalent de :

6,234 . 10 - 3

Notons que : le nombre est précédé de son signe ( ici - )

5 / 8

Page 6: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

la partie entière ( ici 6 ) en valeur absolue est un nombre d'un seul chiffre de 1 à 9 (pas zéro) la partie décimale (ici 234) est séparée de la partie entière par un point (US) ou une virgule (EU) un exposant décimal entier relatif suit la lettre e ou E : e-3 ou E-3 signifient 10-3

91234.56 s'écrirait 9.123456e4 ; équivalent de 9.123456 . 104

 Quelques exemples de formats binaires à virgule flottanteà 32, 64 et 80 bitsRespectivement 4, 8 et 10 octets

Utilisé pour le type "float" (simple précision)

Utilisé pour le type "double" (double précision)

 Détails d'implémentation des nombres en virgule flottante au niveau de leur représentation binaire.Normes IEEE

Le format adopté est le suivant :

6 / 8

Page 7: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

Avec :

Pour éclairer cette définition. nous vous proposons deux exemples.

Traduisons en binaire format flottant simple précision 32 bits ( float )le nombre : -- 1039,0 (écrit ici en décimal)

Occupons-nous d''abord de sa valeur absolue 1039,0.Pour traduire ce nombre (il est entier dans ce premier exemple) en binairenous passons par son écriture hexadécimale :

1039 décimal = 40F héxadécimal = 0000 0100 0000 1111binaire

Nous constituons la mantisse : 1, mantisse

0000 0100 0000 1111 = 1,00 0000 1111 . 210

( 210 opère un décalage de dix chiffres vers la droite après la virgule )

Nous étendons la partie fractionnaire à 23 bits

1,00 0000 1111 = 1,00 0000 1111 0000 0000 0000 0soit, rangé autrement : 1,000 0001 1110 0000 0000 0000mantisse sur 23 bits = 000 0001 1110 0000 0000 0000(on ne mémorise pas le 1 implicite d'avant la virgule)

Nous constituons le décalage IEEE en simple précision 8 bits : 28 - 1 - 1 = 127

Nous constituons l'exposant : exposant = 10 + décalage = 137

137 décimal = 1000 1001 binaire

Voici le résultat : bit de signe - exposant - mantisse

Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 00

En héxadécimal C4 81 E0 00

Le bit de signe (bit b31) positionné à 1 indique un nombre réel négatif !

L'opposé de -1039,0, soit 1039,0, s'obtient en mettant le bit de signe b31 à 0

+ 1039,0 se code 44 81 E0 00 en héxadécimal

 Second exemple.

Traduisons en binaire format flottant simple précision 32 bits ( float )le nombre : x = - 6,625 (écrit ici en décimal)

Occupons-nous d''abord de sa valeur absolue 6,625Traduisons ce nombre en binaire :

7 / 8

Page 8: Nombres relatifs (VIRGULE FLOTTANTE)

Nombres relatifs

6,625 décimal = 110,1010 binaire

Nous constituons la mantisse : 1, mantisse

110,1010 = 1,101010 . 22

( 22 opère un décalage de 2 chiffres vers la droite après la virgule)

Nous étendons la partie fractionnaire à 23 bits

1,101010 = 1,1010 1000 0000 0000 0000 000mantisse sur 23 bits = 101 0100 0000 0000 0000 0000(on ne mémorise pas le 1 implicite d'avant la virgule)

Nous rappelons le décalage IEEE en simple précision 8 bits : 28 - 1 - 1 = 127

Nous constituons l'exposant : exposant = 2+ décalage = 129

129 décimal = 1000 0001 binaire

Voici le résultat : bit de signe - exposant - mantisse

0Bits 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 010En héxadécimal C0 D4 00 00

Le bit de signe (bit b31) positionné à 1 indique un nombre réel négatif !L'opposé de - 6,625, soit + 6,625, s'obtient en mettant le bit de signe b31 à 0+ 6,625 se code 40 D4 00 00 en héxadécimal

http://pagesperso-orange.fr/arsene.perez-mas/numeration/numeration.htm#entiers

8 / 8