Vous êtes sur la page 1sur 131

ARCHITECTURE DES MACHINES NUMÉRIQUES

PR. ELHADJI ISSA SALL, UNIVERSITÉ DU SAHEL

Je m’appelle El Hadji Issa Sall, je suis professeur à


l’Université du Sahel chargé des cours d’informatique
générale dispensé aux étudiants de L1 et d’architecture des
machines numériques pour les étudiants de L3 INFO et PC.

Le cours d’architecture vous permet de concevoir, de


réaliser et de maintenir l’ossature des machines et
systèmes numériques allant des ordinateurs aux drones en
passant par les caméras, les téléphones mobiles, les robots,
les objets connectés, les téléviseurs, les systèmes
embarqués dans les voitures et les avions, les distributeurs
automatiques, les systèmes de transport, la production
industrielle, etc.
1
ARCHITECTURE DES MACHINES NUMÉRIQUES
PR. ELHADJI ISSA SALL, UNIVERSITÉ DU SAHEL

SYLLABUS DU COURS
• la représentation analytique des nombres
• le codage représentatif
• l’arithmétique numérique
• L’algèbre de Boole
• Les portes logiques élémentaires
• la logique combinatoire
• la logique séquentielle,
• l’unité arithmétique et logique et les microprocesseurs
• les mémoires vives, mortes, virtuelles et de masse
• les périphériques, les interfaces, la connectique
• les classes et types d’ordinateurs

Chaque partie du cours comprendra une introduction,


l’exposé du cours, un résumé, des exercices et une 2
bibliographie.
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
Les différentes bases utilisées dans les machines numériques
Représentation polynomiale et positionnelle d’un nombre
Conversion de la base 10 vers les autres bases
Conversion d’un nombre en base 10 vers la base 2 par la méthode des puissances ou des additions successives
Conversion d’un nombre en base 10 vers la base 2 par la méthode des divisions successives
Conversion d’un nombre en base 10 vers la base 2 par la méthode des soustractions
Conversion d’un nombre en base 10 vers la base 8 par la méthode des puissances ou des additions successives
Conversion d’un nombre en base 10 vers la base 8 par la méthode des divisions successives
Conversion d’un nombre en base 10 vers la base 16 par la méthode des puissances ou des additions successives
Conversion d’un nombre en base 10 vers la base 16 par la méthode des divisions successives
Conversion de la base 2 vers les autres bases
Conversion d’un nombre en base 2 vers la base 10 par la méthode des puissances et des additions
Conversion d’un nombre en base 2 vers la base 8 via la base 10 par la méthode des puissances
Conversion d’un nombre en base 2 vers la base 16 via la base 10 par la méthode des puissances
Conversion d’un nombre en base 2 vers la base 8 par la méthode des regroupements par 3
Conversion d’un nombre en base 2 vers la base 16 par la méthode des regroupements par 4
Conversion de la base 8 vers les autres bases
Conversion d’un nombre en base 8 vers la base 10 par la méthode des puissances et des additions
Conversion d’un nombre en base 8 vers la base 16 via la base 10 par la méthode des puissances et des additions
Conversion d’un nombre en base 8 vers la base 16 via la base 2 par la méthode de l’éclatement par 3 et des regroupement de 4
Conversion d’un nombre en base 8 vers la base 2 par la méthode de l’éclatement en groupe de 3
3
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Conversion de la base 16 vers les autres bases


Conversion d’un nombre en base 16 vers la base 10 par la méthode des puissances de 16 et des additions
Conversion d’un nombre en base 16 vers la base 8 via la base 10 par la méthode des puissances de 16 et de 8
Conversion d’un nombre en base 16 vers la base 8 via la base 2 par la méthode de l’éclatement par 4 et des regroupement de 3
Conversion d’un nombre en base 12 vers la base 2 par la méthode de l’éclatement en groupe de 4

Conversion des nombres fractionnaires


Conversion d’un nombre fractionnaire en base 10 vers la base 2 par la méthode des puissances ou des additions successives
Conversion d’un nombre fractionnaire en base 10 vers la base 2 par la méthode de la division et de la multiplication successive
Conversion d’un nombre fractionnaire cyclique en base 10 vers la base 2 par la méthode de la division et de la multiplication successive
Conversion d’un nombre fractionnaire en base 10 vers la base 8 par la méthode des puissances ou des additions successives
Conversion d’un nombre fractionnaire en base 10 vers la base 8 par la méthode de la division et de la multiplication successive
Conversion d’un nombre fractionnaire en base 10 vers la base 16 par la méthode des puissances ou des additions successives
Conversion d’un nombre fractionnaire en base 10 vers la base 16 par la méthode de la division et de la multiplication successive
Conversion d’un nombre fractionnaire en base 2 vers les base 8, 10 et 16
Conversion d’un nombre fractionnaire en base 8 vers les base 2, 10 et 16
Conversion d’un nombre fractionnaire en base 16 vers les base 2, 8, 10

4
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Représentation des nombres fixes signés


La représentation des nombres en signe et module
La représentation des nombres au complément de B-1
Représentation des nombres au complément de B
Passage de la représentation d’un nombre au complément de B-1 à B
Représentation des nombres binaires signés
Représentation des nombres binaires au complément de 1
Représentation des nombres binaires au complément de 2
Représentation des nombres décimaux signés
Représentation des nombres décimaux au complément de 9
Représentation des nombres décimaux au complément de 10
Représentation des nombres octaux signés
Représentation des nombres octaux au complément de 7
Représentation des nombres octaux au complément de 8
Représentation des nombres hexadécimaux signés
Représentation des nombres hexadécimaux au complément de F
Représentation des nombres hexadécimaux au complément de 16
Représentation des nombres en virgule flottante
5
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
Addition numérique
Addition binaire
Addition octale
Addition décimale
Addition hexadécimale
Soustraction numérique
Soustraction binaire utilisant le complément de 1
Soustraction binaire utilisant le complément de 2 et donnant un résultat positif
Soustraction binaire utilisant le complément de 2 et donnant un résultat positif avec l’emprunt à partir de la gauche
Soustraction binaire utilisant le complément de 2 et donnant un résultat négatif

Soustraction octale utilisant le complément de 8 et donnant un résultat positif


Soustraction octale donnant un résultat positif avec l’emprunt à partir de la gauche
Soustraction octale utilisant le complément de 8 et donnant un résultat négatif

Soustraction décimale utilisant le complément de 10 et donnant un résultat positif


Soustraction décimale donnant un résultat positif avec l’emprunt à partir de la gauche
Soustraction décimale utilisant le complément de 10 et donnant un résultat négatif

Soustraction hexadécimale utilisant le complément de 16 et donnant un résultat positif


Soustraction hexadécimale donnant un résultat positif avec l’emprunt à partir de la gauche
Soustraction hexadécimale utilisant le complément de 16 et donnant un résultat négatif 6
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

La multiplication numérique
La multiplication binaire
La multiplication octale
La multiplication décimale
La multiplication hexadécimale

La division numérique
La division binaire
La division octale
La division décimale
La division hexadécimale

7
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Les systèmes de numération

L’objet du codage analytique est de faire en sorte que les informations traitées par les machines numériques,
textes, nombre, sons, images, vidéos, objets, en l’occurrence par les ordinateurs, puissent être représentées en
interne par une succession de chiffres binaires. L’avantage du binaire réside dans sa simplicité, car n’utilisant
que deux états qui sont symbolisés par 0 et 1.
Nous allons commencer l’apprentissage des systèmes de numération par la base décimale qui nous est très
familière. C’est cette base que nous utilisons tous les jours dans tous les domaines. Que ce soit un relevé
bancaire, une facture d’électricité, un bulletin de salaire, l’heure d’une montre, nous avons affaire à des nombres
composés de 10 chiffres qui vont de 0 à 9.
Si nous prenons le nombre 1 234 567 890, il est composé des dix chiffres de la base décimale comme d’ailleurs
les nombres 2 469 135 780, 4 938 271 560, 6 172 839 450, 8 641 975 230, 9 876 543 120 . Ces nombres qui
utilisent les mêmes chiffres n’ont cependant pas la même signification à cause de la place des chiffres qui les
composent. Le nombre 9 876 543 120 fait 8 fois le nombre 1 234 567 890.
C’est la place, la position des chiffres qui déterminent la valeur du nombre qu’ils composent d’où la notion de
notation positionnelle.
8
Un coefficient, une pondération est affectée à chaque chiffre du nombre. Le 9 du nombre 1 234 567 890 vaut 90
tandis que 9 du nombre 6 172 839 450 vaut 9 000, le 9 du nombre 9 876 543 120 vaut 9 milliards.
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Les systèmes de numération


La valeur des chiffres diffère suivant leur position et la base utilisée.
Pour la base 10 ou décimale, le chiffre le plus à droite doit être multiplié par 1 (100), et les
chiffres qui suivent de la droite vers la gauche sont respectivement multipliés par 10 (101), 100
(102), 1000 (103), 10 000 (104) ect..
Pour la base 8 ou octale, le chiffre le plus à droite doit être multiplié par 1 (80), et les chiffres qui
suivent de la droite vers la gauche sont respectivement multipliés par 8 (81), 64 (82), 512 (83),
4096 (84) ect..
Pour la base 2 ou binaire, le chiffre le plus à droite doit être multiplié par 1 (20), et les chiffres qui
suivent de la droite vers la gauche sont respectivement multipliés par 2 (21), 4 (22), 8 (23), 16 (24)
ect..
Pour la base 16 ou hexadécimale, le chiffre le plus à droite doit être multiplié par 1 (160), et les
chiffres qui suivent de la droite vers la gauche sont respectivement multipliés par 16 (161), 256
(162), 4096 (163), 65536 (164) ect.. 9
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Les systèmes de numération


Les systèmes numériques complexes comme les ordinateurs utilisent une base plus simple, la base 2 qui
n’emploie que deux chiffres le 1 et le 0. Quand nous prenons un nombre 11001 de la base 2 nous pouvons avec
le même raisonnement dire que le « 1 » qui se trouve tout à fait à droite vaut 1x20, les autres chiffres qui suivent
vers la gauche sont respectivement multipliés par 21, 22, 23, 24. Le 1 qui est tout à gauche vaut 1x24= 16 et celui
qui est tout à droite vaut 1x20= 1
En dehors de ces 2 systèmes, le décimal et le binaire, nous avons d’autres systèmes comme le système quinaire
(base 5), utilisé couramment en Afrique. Pour comptage en wolof part de 1 à 5 pour ensuite ajouter 1 à 5 pour
faire 6, 2 à 5 pour faire 7 jusqu’à 10. En réalité, le comptage en wolof n’est pas totalement une base 5 car ne
prenant pas en compte le zéro, mais aussi utilisant 5 qui est décrite comme la base.
Le système sénaire (base 6), le systèmes octal (8), les systèmes duodécimal (base 12) qui donne l’avantage de
la divisibilité par 1, 2, 3, 4 et 6, le système hexadécimal (base 16), le systèmes vigésimal (base 20) et le système
sexagésimal (base 60).
Parmi ces multiples base , nous allons axer notre étude sur les base 2, 8, 10 et 16 10
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Représentation polynomiale d’une nombre

La signification d’un nombre en notation positionnelle dépend de sa base. En informatique nous sommes
intéressés essentiellement par quatre bases :
 la base 2 qui est la base par des microprocesseurs,
 la base 10 qui est notre base par défaut
 et les bases 8 et 16 qui sont des multiples de 2 et qui nous aident à représenter les nombres de façon plus
conviviale.
Dans ce chapitre, nous allons étudier comment représenter un nombre dans ces quatre bases et comment
passer d’une base à une autre, en somme comment faire la conversion entre bases.
Nous allons travailler avec les nombres à virgule fixe et les nombres à virgule flottante.
Si nous prenons le nombre 14 ¾, en virgule fixe, il peut s’écrire 14.75, mais en virgule flottante, il peut s’écrire
de plusieurs façons suivant la place de la virgule. Ainsi nous pouvons en virgule flottante écrire 14 ¾ comme
suit : 0.1475 102, 1.475 101, 1475 10-2, etc.
11
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Représentation polynomiale d’une nombre

De manière générale tout nombre N de base b et de signe S en virgule fixe s’écrit en représentation polynomiale
(N)B = S(dnbn + dn-1bn-1 +….. d1b1 + d0b0 + d-1b-1 +….. d-kb-k )B
S est signe du nombre,
di est le symbole (chiffre) de rang i, di∈ N et 0 ≤ di ≤ (B-1)B
dn est le symbole de poids le plus fort (MSB=Most Significant Bit) et
d-k est le symbole de poids le plus faible (LSB = Least Significant Bit)

En numérotation positionnelle, le nombre (N)B s’écrit (N)B = S(dn-1 dn-2 …d1 d0 . d-1 d-2 …d-k)B, avec di∈ N et 0 ≤ di ≤ (B-1)B
dn-1 dn-2 …d1 d0 représente la partie entière et d-1 d-2 …d-k représente la partie fractionnaire.

L’écart entre le nombre représentable le plus grand dans une base et le nombre le plus petit constitue son amplitude ou sa
dynamique. En base 10 si nous voulons représenter un nombre sur 3 positions, le nombre le plus grand sera 999 et le plus petit
000, son amplitude est de 999-000 = 999. En base 2 en 3 positions, le nombre le plus grand est 111 (7) et le plus petit 000(0).
La précision ou la résolution quant à elle définit la différence entre deux nombres consécutifs. Elle est de 1 pour les 4 bases
que nous allons étudier.
12
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE

 (N)10 = S(cn-1.Bn-1+ cn-2.Bn-2+…. c1.B1+ c0B0 . c-1.B-1+…..c-k.Bk)10

 (N)8 = S(cn-1.Bn-1+ cn-2.Bn-2+…. c1.B1+ c0B0 .c-1.B-1+….. c-k.Bk)8

 (N)16 = S(cn-1.Bn-1+ cn-2.Bn-2+…. c1.B1+ c0B0 .c-1.B-1+….. c-k.Bk)16

 (N)2 = S(cn-1.Bn-1+ cn-2.Bn-2+…. c1.B1+ c0B0. c-1.B-1+….. c-k.Bk)2


S est le signe, la partie à gauche du point est la partie entiére et celle qui est à droite du point est la partie fractionnaire

(N)B = S ciBi

0 ≤ ci ≤ (B-1)B 13
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
• (N)10 = S(cn-1.10n-1 + cn-2.10n-2 +…. c1. 101 + c0100 . c-1.10-1 +….. c-k. 10-k)10
• (N)8 = S(cn-1. 8n-1 + cn-2. 8n-2 +…. c1. 81 + c080 . c-1. 8-1 +….. c-k. 8-k)8
• (N)16 = S(cn-1.16n-1 + cn-2. 16n-2 +…. c1. 161 + c0160 . c-1. 16-1 +….. c-k. 16-k)16
• (N)2 = S(cn-1.2n-1 + cn-2. 2n-2 +…. c1. 21 + c020 . c-1. 2-1 +….. c-k. 2-k)2

S est le signe, la partie à gauche du point est la partie entière et celle qui est à droite du point est la
partie fractionnaire. A noter que 100 = 80 = 160 = 20 = 1

• Pour la base 10, les chiffres utilisés vont de 0 à 9 (B-1) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9


• Pour la base 8, les chiffres utilisés vont de 0 à 7 (B-1) : 0, 1, 2, 3, 4, 5, 6, 7
• Pour la base 2, les chiffres utilisés vont de 0 à 1 (B-1) : 0, 1
• Pour la base 16 ou h, les chiffres vont de 0 à 15 (B-1) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
10, 11, 12, 13, 14 et 15, n’étant pas des chiffres, sont remplacés respectivement par A, B, C, D, E, F

14
Conversion d’un nombre entier en base 10 vers les autres bases (2, 8, 16)
Pour convertir un nombre entier en base 10 vers un nombre en base B (2, 8 ou 16) nous pouvons utiliser l’une des trois
méthodes suivantes :

La méthode d’élévation des puissances de la base qui consiste à élever les puissances de B (2, 8 ou 16) de droite à
gauche, commençant par B0 (20, 80 ou 160) jusqu’à l’obtention d’un nombre supérieur ou égal au nombre que nous voulons
convertir. Cette méthode est la plus courante et la plus utilisée. Elle se fait en 3 étapes :

1. Élever les puissances de la base de destination de la droite vers la gauche à partir de B0 (20, 80 ou 160)
2. S’arrêter si l’une des puissances de B (2, 8 ou 16) devient égale ou supérieur au nombre décimale à convertir
3. Chercher l’unique combinaison qui donne le nombre à convertir.
4. On mettra 0 au dessous des puissances non utilisés et le coefficient au dessus des puissances utilisées.

La méthode des divisons successives qui consiste à diviser le nombre en base 10 par la base B (2, 8 ou 16) . Le premier
reste de cette division qui ne peut être que compris entre 0 et B-1 va constituer le bit le moins significatif (LSB) du nombre
de la base d’arrivée que nous voulons trouver. Ensuite, nous divisons le résultats obtenu par B, ainsi de suite jusqu’à ce
que l’on est plus rien à diviser. Le derniers reste sera le bit le plus significatif (MSB) du nombre de la base d’arrivée (2, 8
ou 16) que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.

La méthodes des soustractions successives. Cette méthode ressemble un peu à la première et ne peut d’ailleurs se
faire sans elle. Les puissances successives de la base B (2, 8 ou 16) doivent être connues. Le nombre à convertir doit être
15
soustrait de la puissance la plus élevée et le reste par les puissances suivantes.
Conversion d’un nombre décimal en base 2 avec la méthode des puissances

1. Élever les puissances de 2 de droite à gauche en commençant par 20


2. S’arrêter si l’une des puissances de 2 devient égale ou supérieur au nombre décimale à convertir
3. Chercher l’unique combinaison qui donne le nombre à convertir.
4. On mettra 0 au dessus des puissances non utilisés et 1 au dessous des puissances utilisées.

Prenons 12510 que nous voulons convertir en base 2. La base de départ étant 10 et la base de destination 2, nous allons,
à partir de la droite, aligner les puissances de 2 en commençant par 20 jusqu’à obtenir un nombre supérieur ou égal à
125 avant de nous arrêter.

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1

Nous nous arrêtons à 27 qui est égale à 128 et donc supérieur ou égale au 125. 128 ne sera pas utilisé, nous allons
commencer par 64. Il ne nous reste qu’à chercher les nombres qu’il faut additionner pour trouver 125. En bas des
puissances utilisées, nous allons mettre 1, et en bas des puissances non utilisées nous allons mettre 0.

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
1 1 1 1 1 0 1
125 = (1x64) + (1x32) +(1x16) +(1x8) + (1x4)+ (0x2) +(1x1) Cette combinaison est unique
16

12510 = 11111012
Conversion d’un nombre décimal en binaire avec méthodes des divisions successives
Prenons le nombre décimal 235 que nous voulons convertir en binaire.

La méthode des divisons successives consiste à diviser 235 par 2, et successivement les quotients entiers par 2. Le premier reste de cette
division qui ne peut être compris qu’entre 0 et 1, les symbole de la base 2, va constituer le bit le moins significatif (LSB) du nombre en base 2
que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 117 par 2, ainsi de suite jusqu’à ce que l’on est plus rien à diviser. Le
derniers reste sera le bit le plus significatif (MSB). Les restes des divisions intermédiaires seront entre le LSB et le MSB.

235 : 2 = 117 premier reste 1 (LSB)

117 : 2 = 58 deuxième reste 1

58 :2 = 29 troisième reste 0

29 :2 = 14 quatrième reste 1

14 :2 =7 cinquième reste 0

7 :2 =3 sixième reste 1

3 :2 =1 septième reste 1

1 :2 =0 dernier reste 1 (MSB)


1 1 1 0 1 0 1 1 = 23510 17
On commence par mettre le LSB à droite, ensuite le deuxième reste, le dernier reste (MSB) est à gauche du nombre en base 2
Conversion d’un nombre décimal en binaire avec la méthode des soustractions successives

Cette méthode est une dérivée de la méthode des puissances et ne peut d’ailleurs se faire sans elle. Les puissances
successives de la base 2 doivent être connues. Le nombre à convertir doit être soustrait de la puissance la plus élevée et le
reste des puissances suivantes.

Prenons 23510 que nous voulons convertir en base 2. La base de départ étant 10 et la base de destination 2, nous allons
chercher les puissances de 2 jusqu’à obtenir un nombre supérieur ou égal à 125 avant de nous arrêter.

28 27 26 25 24 23 22 21 20
256 128 64 32 16 8 4 2 1

Nous nous arrêtons à 28 qui est égale à 256 et donc supérieur ou égale au 235 que nous voulons convertir. 256 ne sera pas
utilisé car supérieur à 235. Nous allons ensuite soustraire 27 (128) de 235 qui donne 107. Nous allons soustraire 26 (64) de
107 qui donne 43, ensuite 25 (32) de 43 … jusqu’à 20 (1) de 1 qui donne 0.

En bas des puissance de 2 utilisées nous allons mettre 1, et en bas des nombres non utilisés nous allons mettre 0.
28 27 26 25 24 23 22 21 20
256 128 64 32 16 8 4 2 1
235-128 = 107 107-64=43 43-32=11 11-8=3 3-2=1 1-1=0
1 1 1 0 1 0 1 1
18
23510 = 111010112
Conversion d’un nombre décimal en nombre octal par la méthode des puissances

Prenons 12510 que nous voulons convertir en base 8.

1. Élever les puissances de 8 de droite à gauche en commençant par 80


2. S’arrêter si l’une des puissances de 8 devient égale ou supérieur au nombre décimale à convertir
3. Chercher l’unique combinaison qui donne le nombre à convertir.
4. On mettra 1,2,3,4, 5,6 ou 7 suivant le nombre de fois qu’ils sont utilisés et 0 si la puissance n’est pas utilisée.

83 82 81 80
512 64 8 1

Nous nous arrêtons à 83 qui est égale à 512 et donc supérieur ou égale au 125 que nous voulons convertir. Nous n’allons
pas utiliser 512. Nous commencerons par 64. combien de fois 64 nous pouvons avoir dans 125, 1 seule fois. 215-64 égale
61. Combien de fois 8 nous pouvons avoir dans 61, 7 fois. 61-56 = 5. Combien de fois nous pouvons avoir 1 dans 5, 5 fois.

Il ne nous reste qu’à chercher la combinaison unique, les nombres qu’il faut additionner pour trouver 125.

83 82 81 80
512 64 8 1
125 = (1x64) + (7x8) + (5x1)
19

12510 = 1758
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en octal par la méthodes des divisions successives
Prenons le nombre décimal 249 que nous voulons convertir en octal avec la méthode des divisons successives.
Nous allons diviser 249 par 8 . Le premier reste de cette division qui ne peut être 0, 1, 2, 3, 4, 5, 6 ou 7, les symbole de la base 8, va
constituer le bit le moins significatif (LSB) du nombre en base 8 que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 31
par 8 qui nous donne 3 avec 7 comme reste. 3 sera ensuite divisé par 8 et va donner 0 et 3 comme reste. Ce dernier reste sera le bit le
plus significatif (MSB) du nombre en base 8 que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.

249 : 8 = 31 premier reste 1 (LSB)


31 : 8 =3 deuxième reste 7
3 :8 =0 dernier reste 3 (MSB)
3 7 1 = 24910

On commence par mettre le LSB à droite, ensuite le deuxième reste, le dernier reste (MSB) est à gauche du nombre en base 8

Il est possible de chercher les restes en multipliant la partie fractionnaire du résultat par la base 8

249/8 = 31.125 la partie entière est 31 et la partie décimale est .125 que nous multiplions par 8 pour trouver le reste en octal .125 x 8 donne 1
31/8 = 3.875 la partie entière est 3 et la partie décimale est .875 que nous multiplions par 8 pour trouver le reste en octal .875 x 8 donne 7
3/8 = 0.375 la partie entière est 0 et la partie décimale est .375 que nous multiplions par 8 pour trouver le reste en octal .375 x 8 donne 3 20
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en nombre hexadécimal par la méthode des puissances
Prenons 12510 que nous voulons convertir en base 16.

1. Élever les puissances de 16 de droite à gauche en commençant par 160


2. S’arrêter si l’une des puissances de 16 devient égale ou supérieur à 125
3. Chercher l’unique combinaison qui donne 125
4. On mettra 1,2,3,4, 5,6,7,8,9,A,B,C,D,E,F suivant le nombre de fois qu’ils sont utilisés et 0 si la puissance n’est pas utilisée.

162 161 160


256 16 1
Nous nous arrêtons à 16 qui est égale à 256 et donc supérieur ou égale au 125 que nous voulons convertir. Nous n’allons pas utiliser 256.
2

Combien e fois 16 nous pouvons avoir dans 125, 7 fois. 125- (7x16) = 13. Combien de fois nous pouvons avoir 1 dans 13, 13 fois.

Il ne nous reste qu’à chercher la combinaison unique, les nombres qu’il faut additionner pour trouver 125.
162 161 160
256 16 1
(7x16) + (13x1)
21
13 devra être remplacé par la lettre D qui est son équivalent . 125 = (7x16) + (Dx1 = 7D16
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en hexadécimal par la méthodes des divisions successives

Prenons le nombre décimal 476 que nous voulons convertir en hexadécimal avec la méthode des divisons
successives. Nous allons diviser 476 par 16 . Le premier reste de cette division qui ne peut être que 0, 1, 2, 3, 4, 5, 6
7, 8, 9, A, B, C, D, E et F les symbole de la base 16, va constituer le bit le moins significatif (LSB) du nombre en base
16 que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 29 par 16 qui nous donne 1 avec 13 comme
reste. 1 sera ensuite divisé par 16 et va donner 0 et 1 comme reste. Ce dernier reste sera le bit le plus significatif (MSB)
du nombre en base 16 que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.

476 : 16 = 29 premier reste 12 (C) (LSB)


29 : 16 = 1 deuxième reste 13 (D)
1 : 16 = 0 dernier reste 1
(MSB)
1 D C = 47610
Il est possible de chercher les restes en multipliant la partie fractionnaire du résultat par la base 16

476/16 = 29.75 la partie entière est 29 et la partie décimale est .75 que nous multiplions par 16 pour trouver le reste en hexadécimal .75 x 16 donne 12 (C)
29/16 = 1.8125 la partie entière est 1 et la partie décimale est .8125 que nous multiplions par 16 pour trouver le reste en hexadécimal .8125 x 16 donne 13 (D)
1/16 = 0.0625 la partie entière est 0 et la partie décimale est .0625 que nous multiplions par 16 pour trouver le reste en hexadécimal .0625 x 16 donne 1 22
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 vers les autres bases
Il y a trois méthodes pour passer de la base 2 vers les autres bases (10, 8 et 16).

La première méthode applicable à la conversion de la base 2 vers la base 10 est la méthode dite des additions qui consiste à :

1. écrire le nombre en base 2 et aligner les puissance de la base 2 au dessus du nombre binaire.
2. procéder à la multiplication des puissances de la base 2 par les nombres de la base 2 qui sont au dessus.
3. additionner les résultats issus des multiplications.

La deuxième méthode, celle du regroupement, s’applique aux base 8 et 16 qui sont des puissances de 2. Elle consiste à regrouper à
partir de la gauche les chiffres de la base 2 par 3 ou 4 suivant qu’il s’agisse de les convertir en octal ou en hexadécimal.

Le troisième méthode consiste à passer par une base intermédiaire.

1. Convertir le nombre binaire en décimal par la méthode des additions, puis le convertir en octal ou en hexadécimal
2. Convertir le nombre binaire en octal ou en hexadécimal par la méthode des regroupement, puis le convertir en décimal

23
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 vers la base 10 par la méthode des additions
Pour convertir un nombre binaire en décimal, nous alignons sous le nombre binaire les puissances de 2, ensuite nous nous procédons à
la multiplication et à l’addition des résultats trouvés.

11111012 à convertir en en base 10

1 1 1 1 1 0 1
26 25 24 23 22 21 20

64 32 16 8 4 2 1

(64x1) + (32x1) + (16x1) + (8x1) + (4x1) + (2x0) + (1x1)

64 + 32 + 16 + 8 + 4 + 0 + 1= 12510

24
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 8 par la méthode des regroupements
Nous savons que 8 = 23. Si nous avons un nombre décimal déjà converti en base 2 que nous pouvons le convertir directement en
base 8 sans passer par la méthode des puissances, il nous suffit simplement de faire des regroupements par 3.

Si nous voulons convertir 12510 en octal, nous allons prendre la conversion binaire de 125 et nous allons procéder aux
regroupements de 3 à partir de la droite. Si le groupe le plus à gauche ne fait pas trois, nous allons le compléter par des 0 non
significatifs.

12510 = 11111012

12510 = 0 0 1 1 1 1 1 0 1
22 21 20 22 21 20 22 21 20
4 2 1 4 2 1 4 2 1

1 7 58 25
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 16 en utilisant la méthode des regroupements

Sachant que 16 = 24, , si nous voulons convertir 12510 en hexadécimal, nous allons prendre la conversion binaire de
125 et nous allons procéder aux regroupements de 4 à partir de la droite. Si le groupe le plus à gauche ne fait pas
quatre, nous allons le compléter par des 0 non significatifs.

12510 = 11111012

12510 = 0 1 1 1 1 1 0 1
23 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1

7 13
7 D16 26
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 8 via la base 10 Conversion de la base 2 à la base 16 via la base 10

Si nous voulons convertir 11111012 en base 8, nous Si nous voulons convertir 11111012 en base 16, nous
pensons toute de suite le faire par la méthode du pensons toute de suite le faire par la méthode du
regroupement qui est plus facile et plus directe, mais nous regroupement qui est plus facile et plus directe, mais nous
avons aussi la possibilité de convertir ce nombre en base avons aussi la possibilité de convertir ce nombre en base
10 avant de le convertir en base 8 par la méthode dite des 10 avant de le convertir en base 8 par la méthode dite des
additions. additions.

11111012 =12510 11111012 =12510

Pour convertir 12510 en base 8, nous cherchons les Pour convertir 12510 en base 16, nous cherchons les
puissance de 8 à partir de 80 jusqu’à obtenir un nombre puissance de 16 à partir de 160 jusqu’à obtenir un nombre
supérieur ou égal au 125 que nous voulons convertir. supérieur ou égal au 125 que nous voulons convertir.

83 82 81 80 162 161 160


512 64 8 1 256 16 1
1 7 5 7 13(D) 27
11111012 =12510 =1758 11111012 =12510 =1Dh
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 8 à la base 10 par la Conversion de la base 8 à la base 2 par l’éclatement
méthode des additions
8 étant une puissance de 2, comme pour le
Pour convertir un nombre octal en décimal, nous regroupement par 3 qui nous a permis de passer de la
alignons sous le nombre octal les puissances de 8, base 2 à la base 8, pour passer de la base 8 à la base 2,
ensuite nous nous procédons à la multiplication et à nous pouvons procéder à un éclatement ou
l’addition des résultats trouvés. dégroupement de chaque élément de la base 8 en 3
chiffres binaires.
1758 à convertir en en base 10
Prenons 1758 que nous voulons convertir en base 2.
1 7 5 Nous allons chercher séparément les équivalents binaire
82 81 80 de 1, de 7 et de 5
64 8 1 1 7 5
(64x1) + (8x7) + (1x5)
001 111 101
64+ 56+ 5= 12510
1758 = 12510 1758 = 001111101 = 1111101
28
Conversion de la base 8 à la base 16 via la base 10 Conversion de la base 8 à la base 16 via la base 2

Nous ne pouvons pas convertir directement un nombre Nous ne pouvons pas convertir directement un nombre
base 8 en base 16. Il nous faut passer par une base base 8 en base 16. Il nous faut passer par une base
intermédiaire 2 ou 10. intermédiaire 2 ou 10.

1758 à convertir en en base 16 via la base 10 Prenons 1758 que nous voulons convertir en base 16
via la base 2. Nous allons chercher séparément les
1 7 5 équivalents binaire de 1, de 7 et de 5
82 81 80 1 7 5
64 8 1
001 111 101
(64x1) + (8x7) + (1x5)
64 + 56 + 5= 12510
1758 = 001111101 = 1111101
Nous allons ensuite convertir 12510 en hexadécimal en
élevant les puissance de 16 à partir de la droite en Dans un deuxième temps nous allons prendre la
commençant par 160 jusqu’à obtenir un nombre version binaire que nous allons regrouper par 4 pour
supérieur ou égale à 125 avant de nous arrêter. avoir l’équivalent hexadécimal
0 1 1 1 1 1 0 1
162 161 160 8 4 2 1 8 4 2 1
256 16 1 7 D
7 D 1758 = 1111101 = 7Dh
29
1758 = 12510 = 7Dh
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 16 vers les autres bases

Il y a trois méthodes pour passer de la base 16 vers les autres bases (2, 8 et 10).

La première méthode applicable à la conversion de la base 16 vers la base 10 est la méthode dite des additions qui
consiste à :
1. écrire le nombre en base 16 et aligner les puissance de la base 16 au dessous.
2. procéder à la multiplication des puissances de la base 16 par les chiffres hexadécimaux qui sont au dessus.
3. additionner les résultats issus des multiplications.

La deuxième méthode, applicable à la base 2 est celle de l’éclatement séparée des chiffres hexadécimaux en groupe de
4 symboles binaires.

La troisième méthode consiste à passer par une base intermédiaire.


1. Convertir le nombre hexadécimal en binaire par éclatement et les regrouper par 3 pour avoir la version octal.
2. Convertir le nombre en base 10 et passer vers la base 8 et 2
30
Conversion de la base 16 vers la base 10 et 8 Conversion de la base 16 vers la base 2 et 8

Pour convertir un nombre hexadécimal en décimal, nous 16 étant une puissance de 2, pour convertir un nombre
alignons sous le nombre hexadécimal les puissances de hexadécimal en base, nous procédons par la méthode de
16, ensuite nous nous procédons à la multiplication et à l’éclatement.
l’addition des résultats trouvés.
7D16 à convertir en en base 2
7D16 à convertir en en base 10

7 D
7 D(13)
8 4 2 1 8 4 2 1
161 160
0 1 1 1 1 1 0 1
16 1
(16x7) + (1x13)
7D = 1111101
112 + 13 = 12510
7D16 =12510 La version binaire peut être convertie en octal par
12510 peut ensuite être converti en base 8 avec la regroupent de 3
méthode des puissances
7D = 1111101 = 001 111 101
83 82 81 80 1 7 5
512 64 8 1
1 7 5
7Dh = 11111012 = 1758
7Dh = 1758 31
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire

Jusqu’à présent nous avons converti des nombres entiers. Nous allons maintenant convertir des nombres fractionnaires.
Rappel. Tout nombre N de base B avec un signe S en virgule fixe peut s’inscrire
(N)B = S(dn-1 dn-2 …d1 d0 , d-1 d-2 …d-k)B
Avec 0 <= di <= (B-1)
La méthode est la même mais à droite de la virgule, nous avons des puissances négatives

Si nous voulons convertir 125,510 en binaire, nous allons élever les puissances de 2 positives à gauche de la virgule
et les puissances de 2 négatives à droite de la virgule

27 26 25 24 23 22 21 20 , 2-1 2-2 2-3 2-4


128 64 32 16 8 4 2 1 , 0,5 0,25 0,125 0,0625
1 1 1 1 1 0 1 , 1
32
125,510 = 1 1 1 1 10 1,1
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal fractionnaire vers les autres bases par la méthode des puissances
Pour convertir 125,510 en binaire, il faut élever les puissances positives de 2 à gauche de la virgule et les puissances négatives de 2 à droite de la virgule.
27 26 25 24 23 22 21 20 , 2-1 2-2 2-3 2-4
128 64 32 16 8 4 2 1 , 0,5 0,25 0,125 0,0625
1 1 1 1 1 0 1 , 1
125,510 = 1 1 1 1 1 0 1,1
Pour convertir 125,510 en octal, il faut élever les puissances positives de 8 à gauche de la virgule et les puissances négatives de 8 à droite de la virgule.
83 82 81 80 , 8-1 8-2 8-3
512 64 8 1 , 0,125 0,015625 0,001953125
1 7 5 , 4
125,510 = 175,4
Pour convertir 125,510 en hexadécimal, il faut élever les puissances positives de 16 à gauche de la virgule et les puissances négatives de 16 à droite de la virgule.

163 162 161 160 , 16-1 16-2 16-3


4096 256 16 1 , 0,0625 0,00390625 0,000244140625
7 D , 8 33
125,510 = 7D,8
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire binaire vers les autres bases

Pour convertir 1111101,101 en décimal, il faut mettre le nombre binaire en haut et les puissance de 2 en bas, faire la multiplication plus l’addition
1 1 1 1 1 0 1 , 1 0 1
26 25 24 23 22 21 20 , 2-1 2-2 2-3
64 + 32 + 16 + 8 + 4 + 0 + 1 , 0,5 + 0 + 0,125
1 1 1 1 1 0 1,1 0 1 = 125,625
Pour convertir 1111101,101 en octal, il faut faire des regroupements par 3

1 111 101 , 101


1 7 5 , 5 1111101,101 = 175,58
Pour convertir 1111101,101 en hexadécimal, il faut faire des regroupements par 4
0111 1101 , 1010
7 D , A

NB. Pour les regroupements de la partie entière, il faut partir du LSB vers le MSB. A partir de la virgule vers la gauche.
Les zéros non significatifs pour compléter le groupe sont à gauche.
34
Pour les regroupements de la partie fractionnaire, il faut partir du MSB vers le LSB. A partir de la virgule vers la droite.
Les zéros non significatifs pour compléter le groupe sont à droite.
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire octal vers les autres bases
Pour convertir 175,48 en décimal, il faut mettre les puissances de 8 sous le nombre octal, faire la multiplication puis l’addition

1 7 5 , 4
82 81 80 , 8-1
64*1=64 + 8*7=56 + 1*5=1 , 0,125 *4=0,5 175,48 = 125,510

Pour convertir 175,48 en binaire, il faut éclater 1, 7, 5 et 4 en groupe de 3 en tenant compte de la virgule. Les 0 du début de la partie entière ne
comptent pas de même que les 0 de fin de la partie fractionnaire.
1 7 5 , 4
001 111 101 , 100 175,48 =1111101 ,1
Pour convertir 175,48 en hexadécimal, il faut éclater 1, 7, 5 et 4 en groupe de 3 en tenant compte de la virgule pour avoir le binaire qui sera ensuite
regroupé en 4 pour avoir l’héxadécimal.

175,48 =1111101,1 0111 1101 , 1000


7 D , 8

175,48 = 125,510 =1111101,12 = 7D,8h 35


REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire hexadécimal vers les autres bases
Pour convertir 7D,8h en décimal, il faut mettre les puissance de 16 sous le nombre hexadécimal, faire la multiplication puis l’addition

7 D , 8
161 160 , 16-1
16*7=112 + 1*13=13(D) , 0,0625 *8=0,5 7D,8h = 125,510

Pour convertir 7D,8h en binaire, il faut éclater 7, D, et 8 en groupe de 4 en tenant compte de la virgule.

7 D , 8
0111 1101 , 1000 7D,8h = 1111101,1
Pour convertir 7D,8h en octal, il faut éclater 7, D, et 8 en groupe de 4 en tenant compte de la virgule pour avoir le binaire qui sera ensuite regroupé en 3
pour avoir l’octal.

7D,8h = 1111101,1 001 111 101 , 100


1 7 5 , 4
36
7D,8h =175,48 = 125,510 =1111101,12
ARITHMÉTIQUE NUMÉRIQUE

Conversion d’un nombre décimal fractionnaire


Conversion d'un nombre fractionnaire 58.625
en binaire par la méthode des divisions et des
multiplications successives Conversion de la partie entiere d'un nombre base 10 en base 2 Conversion de la partie fractionnaire d'un nombre base 10 en base 2

58 2 Multiplicande
multiplicateur Partie entière
Partie
Pour convertir un nombre factionnaire, il Partie fractionnaire
faut : 0 29 2 fractionnaire
(Base) du produit
du produit
1. convertir la partie entière du nombre en Reste 1 14 2 0,625 2 1 0,25 MSB
utilisant la méthode des divisions LSB Reste 0 7 2 0,25 2 0 0,5
successives du nombre par la base. Reste 1 3 2 0,5 2 1 0 LSB
LSB en haut et MSB en bas. Reste 1 1 2
Reste 1 0
1. Convertir la partie fractionnaire en la Reste
multipliant par la base et en séparant la MSB
partie entière du produit à la partie
fractionnaire du produit. Cette dernière
partie sera encore multipliée par la base 58 base 10 = 1 1 1 0 1 0 0,625 base 10 1 0 1
jusqu’à ce qu’on trouve 0. Cette fois-ci, 37
le MSB se trouve en haut et le LSB en 1 1 1 0 1 0 . 1 0 1
bas.
ARITHMÉTIQUE NUMÉRIQUE

Conversion d’un nombre fractionnaire Conversion d'un nombre fractionnaire 58.15


cyclique Conversion de la partie entiere d'un nombre base 10 en base 2 Conversion de la partie fractionnaire d'un nombre base 10 en base 2

Pour la partie fractionnaire, il nous arrive de ne 58 2 Multiplicande


multiplicateur Partie entière
Partie
Partie fractionnaire
pas trouver 0 après plusieurs multiplications. 0 29 2 fractionnaire
(Base) du produit
du produit
Reste 1 14 2 0,15 2 0 0,3 MSB
Ceci est du essentiellement au fait que le nombre
LSB Reste 0 7 2 0,3 2 0 0,6
à convertir n’a pas un équivalent exacte dans la
Reste 1 3 2 0,6 2 1 0,2
base choisie (B) et sa partie fractionnaire est Reste 1 1 2 0,2 2 0 0,4
cyclique. Reste 1 0 0,4 2 0 0,8
Vous remarquerez qu’un groupe de nombre se Reste 0,8 2 1 0,6
répète à l’infini. Dans ce cas, nous disons que le MSB 0,6 2 1 0,2
nombre à convertir est cyclique dans la base B 0,2 2 0 0,4

de période « les groupes de nombres qui se 0,4 2 0 0,8


0,8 2 1 0,6
répètent »
0,6 2 1 0,2 LSB
Dans ce cas, le nombre 58.15 est cyclique dans
la base 2 de période 1001. Il faut noter que la 58 base 10 = 1 1 1 0 1 0 0,15 base 10 0 0 1
périodicité porte sur la partie entière du produit 38
et non sur la partie fractionnaire 1 1 1 0 1 0 . 0 0 1 0 0 1 1 0 0 1
ARITHMÉTIQUE NUMÉRIQUE

Tableau des puissances des bases 16, 10, 8 et 2 des puissance de 10 à -10
10 1 099 511 627 776 16 10 000 000 000 10 1 073 741 824 8 1 024 2 10
9 68 719 476 736 16 1 000 000 000 10 134 217 728 8 512 2 9

8 4 294 967 296 16 100 000 000 10 16 777 216 8 256 2 8

7 268 435 456 16 10 000 000 10 2 097 152 8 128 2 7

6 16 777 216 16 1 000 000 10 262 144 8 64 2 6

5 1 048 576 16 100 000 10 32 768 8 32 2 5

4 65 536 16 10 000 10 4 096 8 16 2 4

3 4 096 16 1 000 10 512 8 8 2 3

2 256 16 100 10 64 8 4 2 2

1 16 16 10 10 8 8 2 2 1

0 1 16 1 10 1 8 1 2 0

-1 0,0625 16 0,1 10 0,125 8 0,5 2 -1

-2 0,00390625 16 0,01 10 0,015625 8 0,25 2 -2

-3 0,000244141 16 0,001 10 0,001953125 8 0,125 2 -3

-4 0,0000152587890625 16 0,0001 10 0,000244140625 8 0,0625 2 -4

-5 0,00000095367431640625 16 0,00001 10 0,000030517578125 8 0,03125 2 -5

-6 0,0000000596046447753906 16 0,000001 10 0,000003814697265625 8 0,015625 2 -6

-7 0,00000000372529029846191 16 0,0000001 10 0,000000476837158203125 8 0,0078125 2 -7

-8 0,00000000023283064365387 16 0,00000001 10 0,0000000596046447753906 8 0,00390625 2


39
-8

-9 0,0000000000145519152283669 16 0,000000001 10 0,00000000745058059692383 8 0,00195313 2 -9

-10 0,000000000000909494701772928 16 0,0000000001 10 0,000000000931322574615479 8 0,00097656 2 -10


REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE

Conversion d’un nombre fractionnaire base 8 vers 10 Conversion d’un nombre fractionnaire en base 10 vers 16
125,1258 à convertir en en base 10
125,0625 10 en hexadécimal
1 2 5 , 1 2 5
82 81 80 , 8-1 8-2 8-3 162 161 160 , 16-1 16-2
64 8 1 , 0,125 0,015625 0,001953125 256 16 1 , 0,0625 0,00390625
64+ 16+ 5 , 0,125+ 0,03125+ 0,009765625 7 D , 1

125,1258 = 85,1660156210 125,0625 10 =7D,116

Conversion d’un nombre fractionnaire base 10 vers 8 125, 06640625 10 en hexadécimal


85,1660156210 à convertir en base 8
162 161 160 , 16-1 16-2
82 81 80 , 8-1 8-2 8-3 256 16 1 , 0,0625 0,00390625
64 8 1 , 0,125 0,015625 0,001953125 7 D , 1 1
1 2 5 , 1 2 5
125,06640625 10 = 7D,1116
40
85,1660156210 =125,1258
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices
Faire les conversions suivantes

Problèmes Solutions
A. 727 10 en octal 13278
B. 2803 10 en hexadécimal AF3
C. 0,101012 en base 10 0,6562510
D. 0,ABC en base 10 0,670810
E. 0,74210 en octal 0,57378
F. 0,432110 en hexadécimal 0,6E9E
G. 1254,173 10 en octal 2346,13048
H. A73,4F2 en octal 5163,23628
I. 127,7510 en binaire 1111111,112
J. 307,1810 en binaire 100110011,00101112
K. 3AF2 en décimal 1509010
L. 10110112 en décimal 9110
M. 1254,173 10 en binaire 10 011 100 110.001 011 000 12
N. 0,711 8 en décimal 0,89210
O. 7428 en décimal 48210
P. 742.711 8 en décimal 482.8928 41
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Bibliographie

Mowle, Frederic J., A systematic approach to digital logic design. Reading, Massachussetts: Addison-Wesley publishing company, Inc, 1976.
Flores, I., The logic of computer arithmetic. Englewood Cliffs, NJ : Prentice-Hall, 1963
Harris, David, M and Sarah, L., Digital design and computer architecture, 2nd ed., Waltham, Massachussetts: Morgan Kaufmann, 2013.
Hennesey, J.L, et Patterson, D.A. : Architecture des ordinateurs: une approche quantitative, 3e éd., Paris : Vuibert 2003
Gilmore, C. M.., Le fonctionnement des microprocesseurs: l’avant programmation., Paris, Dunod 1984
Zanella, P,.Ligier, Y., Lazard, E. Architecture et technologie des ordinateurs: cours et exercices corrigés, 5e ed., Paris, Dunod 2013
Carter, N.P. Architecture de l’ordinateur, Paris, Dunod 2002S
Schwarz, J. J. Architecture des ordinateurs, Paris, Eyrolles 2005

42
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Représentation des nombres signés

Jusqu’à présent nous avons travaillé avec les nombres positifs. Dans ce chapitre, nous allons étudier les 3 méthodes
les plus utilisées pour la représentation des nombres signés : La représentation en signe et valeur absolue, la
représentation au complément logique ou restreint (complément à b-1), la représentation au complément arithmétique
ou vrai (complément à b).

Nous sommes tous familiers à la représentation en signe et valeur absolue, car c’est elle que nous utilisons tous les
jours. Elle est cependant moins bien adaptée aux opérations arithmétiques. La représentation au complément logique
et la représentation au complément arithmétique sont plus simples à implémenter dans les machines.

A cause de notre familiarité avec la notation classique signe et valeur absolue, il nous arrive des fois de rencontrer des
représentations de nombres négatifs un peu bizarre. +72,3 base 10 devrait s’écrire 072,3 et le nombre +9,25 devrait
s’écrire 09,25. Nous avons tendance à dire que +72,3 est équivalent à 72,3 et +9,25 est équivalent à 9,25.
Dans le premier cas, nous pouvons considérer que le 0 non significatif est négligé, mais dans le second cas, nous
allons considérer 9,25 comme le nombre négatif -,25).
43
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation en signe et valeur absolue (Sign and Magnitude)
Nous sommes tous familiers à cette méthodes, car c’est elle que nous utilisons tous les jours. Elle est cependant moins bien adaptée aux opérations
arithmétiques. Dans ce mode de représentation seul le signe change et le module reste constant.

A cause de notre familiarité avec la notation classique signe et valeur absolue, il nous arrive des fois de rencontrer des représentations de nombres négatifs un
peu bizarre. +72,3 base 10 devrait s’écrire 072,3 et le nombre +9,25 devrait s’écrire 09,25. Nous avons tendance à dire que +72,3 est équivalent à 72,3 et +9,25
est équivalent à 9,25. Dans le premier cas, nous pouvons considérer que le 0 non significatif est négligé, mais dans le second cas, nous allons considérer 9,25
comme le nombre négatif -,25).

Pour représenter un nombre en base B avec signe nous prenons conventionnellement 0 pour représenter le signe « + » et (B-1) pour représenter le signe « - ».
Cela nous permet d’ailleurs de garder les signes « + » et « – » pour l’ addition et la soustraction. Le MSB représente le signe et les autres bits représentent la
valeur absolue (module).
(N)B = S(dn-1 dn-2 …d1 d0 , d-1 d-2 …d-k)B
Avec 0 <= di <= (B-1)

Le nombre est positif si S=0 et négatif si S=(B-1)


En base 2, 0 donne le signe + et (2-1) =1 donne le signe – N = 0,10112 -N = 1,10112
En base 8, 0 donne le signe + et (8-1) =7 donne le signe – N = 03458 -N = 73458
En base 10, 0 donne le signe + et (10-1)=9 donne le signe – N = 034510 -N = 934510
44
En base 16, 0 donne le signe + et (16-1)=F donne le signe – N = 034516 -N = F34516
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE

La représentation en module et signe (Sign and Magnitude) d’un nombre binaire de n bits
-(2n-1-1) à + (2n-1-1)
Pour la représentation en module et signe, les nombres de n bits qu’on peut représenter vont
de – (2n-1-1) à + (2n-1-1) N10 N2 -N2 -N10
Sur un format de 4 bits nous pouvons représenter les nombres allant de : 0 0000 1000 0
–(24-1 -1) à +(24-1 -1), –(23 -1) à +(23 -1), -7 à +7 1 0001 1001 -1
2 0010 1010 -2
-7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 +6 +7 3 0011 1011 -3
4 0100 1100 -4
Un inconvénient majeur dans cette représentation est le 0 qui possède deux notations possibles
0000 et 1000. 5 0101 1101 -5
6 0110 1110 -6
L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à la 7 0111 1111 -7
positon du MSB et à compléter les autres par 0. Cela peut s’appliquer sur les nombres positifs
comme sur les nombres négatifs.

+6 sur 4 bits s’écrit 0110 et sur 6 bits 000110


-6 sur 4 bits s’écrit 1110 et sur 6 bits 100110 45
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation en module et signe (Sign and Magnitude) de nombres en base 8, 10 et 16

(N)B = Sdn-2 …d1 d0 , d-1 d-2 …d-k)B , avec 0 <= di <= (B-1)

Pour la représentation en module et signe, les nombres de n bits qu’on peut représenter vont de
– (Bn-1-1) à + (Bn-1-1)
Les nombres décimaux de 3 bits vont de -99 à +99 (999, 998, 997……………902, 901, 900, 000, 001, 002, ……..…098, 099)
Les nombres octaux de 3 bits vont de -77 à + 77 (777, 776, 775, ……….….702, 701, 700, 000, 001, 002, ..…..….076, 077)
Les nombres hexadécimaux de 3 bits vont de -FF à + FF (FFF, FFE, FFD, …………F02, F01, F00, 000, 001, 002, ……….0FE, 0FF)

L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à la positon du MSB et à compléter les
autres par 0. Cela peut s’appliquer sur les nombres positifs comme sur les nombres négatifs.

+9810 sur 3 bits s’écrit 09810 et sur 6 bits 00009810 -9810 sur 3 bits s’écrit 99810 et sur 6 bits 90009810
+768 sur 3 bits s’écrit 0768 sur sur 6 bits 0000768 -768 sur 3 bits s’écrit 7768 sur sur 6 bits 7000768
+7616 sur 3 bits s’écrit 07616 sur sur 6 bits 00007616 -7616 sur 3 bits s’écrit F7616 sur sur 6 bits F0007616

46
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation au complément restreint, de (B-1), (Diminish Radix) ou complément de 9,7,15,1
Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation complément de base moins un (B-1) comme suit :
(-N)B= (Bn)B - (N)B - (.1)kB
N =0123.4510 n=4, m=6 k=2
(-N)10 = (104)10 - (N)10 - (.1)210
(-N)10 = (10000.00)10 - (0123.45)10 - (0000.01)10 = (10000.00 - 0000.01)10 - (0123.45)10
(-N)10 = (9999.99)10 - (0123.45)10 = (9876.54)10

A noter que 0123.4510 + 9876.5410 = 9999.99


(N)B + (- (N)B) = (N)B + (Bn)B - (N)B - (.1)kB = (Bn)B - (.1)kB = (10000.00 - 0000.01)10 = 9999.99 = (B-1)(B-1)(B-1)(B-1).(B-1)(B-1)
(N)B (-N)B (N)B (-N)B (Bn)B - (.1)kB
0143.2110 9856.7810 0143.2110 + 9856.7810 = 9999.99
7421.378 0356.408 7421.378 + 0356.408 = 7777.77
1010.112 0101.002 1010.112 + 0101.002 = 1111.11
FA43.0B16 05BC.F416 FA43.0B16 + 05BC.F416 = FFFF.FF 47
Les nombres qu’on peut représenter vont de – (2n-1-1) à + (2n-1-1)
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation en complément de (B-1) ou restreint (Diminish
Radix) ou complément de 9,7,15,1
– (2n-1-1) à + (2n-1-1)
La représentation d’un nombre au complément de 1 pose le problème du
zéro qui à une double représentation. N10 N2 N'2 -N10
+0 donne 0000. Le complément de 0 qui doit rester 0 s’écrit 1111. Nous
0 0000 1111 0
nous trouvons avec 0 qui s’écrit 0000 et 0 qui s’écrit 1111. Nous appelons
le premier zéro + 0 et le second zéro -0 1 0001 1110 -1
2 0010 1101 -2
S’il s’agit de la base 8, 10 et 16, nous rencontrons les mêmes problèmes. 3 0011 1100 -3
En base 8, +0 s’écrit 0000 et son complément de 7 est 7777 qui est le -0 4 0100 1011 -4
En base 10, + 0 s’écrit 0000 et son complément de 9 est 9999 qui est le -0 5 0101 1010 -5
En base 16, +0 s’écrit 0000 et son complément e 15 est FFFF qui est –0 6 0110 1001 -6
7 0111 1000 -7
Pour éviter cette situation, bous allons représenter un nombre négatif par
le complément de B qui le complément de (B-1) plus 1.
48
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation Base (Radix) ou complément de 10, 8, 16, 2

La négation –N d’un nombre positif N est représentée en complément de B par la formule suivante:
(-N)B = (Bn)B - (N)B
N est le nombre positif, n est le nombre de chiffre de la partie entière,
N =0123.45610 n=4, m=7
(-N)B= (104)10 - (0123.456)10
(-N)B= (10000.000)10 - (0123.456)10 = 9876.54410

A noter que 0123.45610 + 9876.54410 = 0000.000


(N)B + (- (N)B) = (N)B + (Bn)B - (N)B = (Bn)B = (1 0000.000 )10 = 0000.000 Le 1 de (Bn)B est un débordement (overflow) à ignorer

(N)B (-N)B
0432.1210 9567.8810 0432.1210 + 9567.8810 = 1 0000.00
7142.118 0635.678 7142.118 + 0635.678 = 1 0000.00
0111.0102 1000.1102 0111.0102 + 1000.1102 = 1 0000.000
0A37.1116 F5C8.EF16 0A37.1116 + F5C8.EF16 = 1 0000.00 49

Les nombres qu’on peut représenter vont de – 2n-1 à + (2n-1-1)


REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation Base (Radix) ou complément de 10, 8, 16, 2
-2n-1 à + (2n-1-1)
Les nombres qu’on peut représenter vont de – 2n-1 à + (2n-1-1)
Le nombre 0 a une représentation unique qui est 0000 N10 N2 N'2 -N2 -N10
L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à 0 0000 1111 0000 0
la postions du MSB et à compléter les autres par 0 pour les nombres positifs et par 1 pour les 1 0001 1110 1111 -1
nombres négatifs. 2 0010 1101 11110 -2
3 0011 1100 1101 -3
+6 sur 4 bits d’écrit 0110 et sur 6 bits 000110
4 0100 1011 1100 -4
- 6 sur 4 bits d’écrit 1010 et sur 6 bits 111010
Si nous avons un nombre négatif qui est déjà représenté au complément de 2, pour connaitre sa 5 0101 1010 1011 -5
valeur, nous devons chercher le complément de R du nombre. 6 0110 1001 1010 -6
7 0111 1000 1001 -7
Si nous avons 1011 représenté au complément de 2, nous savons que c’est un nombre négatif 1000 -8
car le MSB est 1. A première vues, nous sommes tenté de dire que ce nombre binaire est
l’équivalent de -3 en base 10, 1 étant le signe et 011 la valeur absolue. Cela n’est vrai qu’en
représentation en signe et valeur absolue.

Le complément de 1 de 1011 nous donne 0100. Si on y ajoute 1, nous aurons son complément
de 2 qui est 0101. 0101 est l’équivalent de +5. Le nombre 1011 est alors -5 au lieu de -3.
50
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Passage de la représentation au complément B -1 à B

Nous avons étudié la représentation d’un nombre négatif en complément B (vrai) et en complément de B-1 (restreint), mais dans la
pratique, nous partons toujours du complément de B-1 qui est plus facile à obtenir pour aller au complément de B en ajoutant 1.

Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation de base comme suit :
(-Nr)B= (Bn)B - (N)B

Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation de base mois un comme suit :
(-N )B= (Bn)B - (N)B - (.1)kB
r-1 (-N )B+ (.1)kB = (Bn)B - (N)B = (-Nr)B = (-N )B+ 1
r-1 r-1

Pour obtenir le complément B d’un nombre on cherche le complément B-1 et on ajoute 1.

51
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE

Cas spécifique des nombre binaires - Représentation en complément de 1


La représentation au complément de 1 consiste à remplacer les 0 par des 1 et les 1 par des 0.
Ainsi si m=01001100, son complément en base 1 sera m barre = 10110011
Le bit le plus significatif est le bit de signe et est 0 si le nombre est positif et est 1 si le nombre est négatif.
Cette notation à cependant un problème car le nombre 0 ne sera plus son propre complément. 0=00000000,
le complément en base 1 est 11111111, ce qui nous donne deux types de zéro.

52
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Représentation en complément de 2

Le représentant en complément de 2 est la représentation en complément de 1 plus 1.


n=01010100, le complément de 1 de m est 10101011, le complément de 2 de m est 10101011+1 = 10101100

Quand on fait le complément à deux d’un nombre on retient tout le nombre y compris le signe.
Avec le complément à 2 le problème du 0 est résolu. 0=00000000, le complément à 1 de 0 est 11111111 et son
complément à 2 est 11111111+1 = 1 0000 0000. Comme le 1 dépasse les 8 bits, il est négligé et le 0 devient 0
Pour chercher le complément à 2 d’un nombre décimal en binaire, il faut :
Convertir le nombre positif en binaire
Chercher le complément de 1 en changeant les 1 par des 0 et les 0 par des 1
Chercher le complément de 2 en ajoutant 1 au complément de 1

On fait la représentation de +50, qui sur 8 bits fait : 00110010


Chercher son complément de 1 qui donne : 11001101
Cherche son complément de 2 en y ajoutant 1 = 11001110
Complément de deux d’un nombre négatif 53
1111 1111 0000 0000 +1 = 0000 0001 =1
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Représentation en complément de 8, 10 et 16 à partir des
compléments de 7, 9 et 17
Le représentant en complément de 8, 10, 16 est la représentation en complément de B plus 1.

N 35728 123410 1ABCH


Complément de (B-1) de N 42058 876510 D543H
On ajoute 1 pour avoir le complément de B 1 1 1
Complément de B de N 42068 876610 D544H
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

N 35728 123410 1ABCH


+
Complément de B de N 42068 876610 D544H

La somme donne 0 00008 000010 0000H 54


REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Les chiffres complémentaires des bases 2, 8, 10 et 16

Base 2
Chiffre 0 1
Complément 1 0

Base 8
Chiffre 0 1 2 3 4 5 6 7
Complément 7 6 5 4 3 2 1 0

Base 10
Chiffre 0 1 2 3 4 5 6 7 8 9
Complément 9 8 7 6 5 4 3 2 1 0

Base 16
Chiffre 0 1 2 3 4 5 6 7 8 9 A B C D E F 55
Complément F E D C B A 9 8 7 6 5 4 3 2 1 0
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Cherchez le complément de 1 des nombres décimaux signés

-512 = 1111 1101 1111 1111


512 = 0000 0010 0000 0000
321 = 0000 0001 0100 0001
-321 = 1111 1110 1011 1110
-123 = 1000 0100
123 = 0111 1011
0 = 00
-874 = 1111 1100 1001 0101
10,111,011 = 0000 0000 1001 1010 0100 1000 0010 0011
-37 = 1101 1010
10,101,010 = 0000 0000 1001 1010 0010 0001 0001 0010
-4,097 = 1110 1111 1111 1110
NB. Le remplacement des 0 par des 1 et des 1 par des 0 ne s’applique que si le nombre est négatif et
56
commence par un 1. Si le nombre commence par 0, il est positif et la recherche de son complément n’est
pas nécessaire.
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Cherchez le complément de 2 des nombres décimaux signés

-4,096 = 1111 0000 0000 0000


4,096 = 0001 0000 0000 0000
-512 = 1111 1110 0000 0000
51,338 = 0000 0000 0000 0000 1100 1000 1000 1010
512 = 0000 0010 0000 0000
-312 = 1111 1110 1100 1000
868 = 0000 0011 0110 0100
7,222 = 0001 1100 0011 0110
292 = 0000 0001 0010 0100
312 = 0000 0001 0011 1000
0 = 00
-1 = 11
1,153,605,633 = 0100 0100 1100 0010 1010 0000 0000 0001
NB. Le complément de 2 est égale au complément de 1 + 1 et s’applique que si le nombre est négatif et commence 57
par un 1.
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Convertir les nombres binaires signés en décimal
0000 1011 1110 1111 = 3,055
0000 0001 1111 1111 = 511
0010 1010 1010 1010 = 10,922
1010 1100 1110 1001 = -11,497
0000 1101 1101 0110 = 3,542
0100 1111 1010 0010 0100 0000 0000 0000 = 1,336,033,280
1010 1100 1110 1001 = -11,497
1111 0000 1111 0000 = -28,912
0000 0001 1100 1010 = 458
0000 0001 0111 1100 = 380
0000 0001 1001 0100 = 404
0000 0001 0111 1101 = 381
0000 0011 0001 1100 = 796

58
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Convertir les nombres binaires signés représentés au complément de 2 en décimal

1111 0101 = -10 1001 1001 = -102 1011 0101 = -74


1100 0011 = -60 1100 1011 = -52 1000 1111 = -112
1111 0100 = -11 1010 0111 = -88 1010 1011 = -84
1110 0011 = -28 1111 0010 = -13 1001 0011 = -108
1111 1000 = -7 1011 0010 = -77 1101 1100 = -35
1011 = -4 1110 1010 = -21 1111 0001 = -14
1000 0001 = -126 1110 0111 = -24 1100 1101 = -50
1101 1111 = -32 1001 0010 = -109 1001 1011 = -100
1111 0000 = -15 1101 1101 = -34 1011 1001 = -70
1001 1101 = -98 1110 1100 = -19 1010 1101 = -82
1001 1100 = -99 1011 0110 = -73 011011 1000 = -71
1001 1010 = -101 1111 1111 = -0 1110 1011 = -20
1010 1010 = -85 1001 1110 = -97 0111 0010 = 114
1010 1111 = -80 1110 0101 = -26 1110 0000 = -31 59
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices
924.135 est un nombre base 10 exprimé en
Conversion de la partie entiere d'un nombre base 10 en base 2 Conversion de la partie fractionnaire d'un nombre base 10 en base 2
notation signe et valeur absolue (sign and
magnitude). Donnez l’équivalent de ce nombre en 24 2 Multiplicande
Partie
multiplicateur Partie entière
Partie
fractionnaire
0 12 2 (Base) du produit
complément de 2 binaire. fractionnaire du produit
Reste 0 6 2 0,135 2 0 0,27 MSB
LSB Reste 0 3 2 0,27 2 0 0,54
Le nombre 924.135 commençant par 9 est Reste 1 1 2 0,54 2 1 0,08
1 0 2 0,08 2 0 0,16
négatif, nous allons chercher le nombre positif, le Reste

Reste 0 0 0,16 2 0 0,32


convertir en binaire et chercher le complément de Reste 0,32 2 0 0,64
1, puis de 2. MSB 0,64 2 1 0,28
0,28 2 0 0,56
924.13510 = -24.13510 , le nombre positif est
0,56 2 1 0,12
+24.135 (024.135) en binaire, ce nombre devient : 0,12 2 0 0,24
0 110 000. 001 000 101 0,24 2 0 0,48 LSB

1 001 111. 110 111 010 complément de 1 24 base 10 = 0 1 1 0 0 0 0,135 base 10 0 0 1


+ 1
1 100 111 . 110 111 011 complément de 2 0 1 1 0 0 0 . 0 0 1 0 0 0 1 0 1 0

60
Exercices
0.10112 1.10112
0124.3415 4124.3415
934510 034510
0123.4510 9876.5410

Combien de nombres entiers non signés de 8-bit, 16-bit, 32-bit et 64-bit peut on représenter

Les nombres entiers non signés vont de 0 à 2n-1

Pour 8 bits les nombres vont de 0 à 28-1 = de 0 à 255


Pour 16 bits les nombres vont de 0 à 216-1 = de 0 à 65535
Pour 32 bits les nombres vont de 0 à 232-1 = de 0 à 4294967295
Pour 64 bits les nombres vont de 0 à 264-1 = de 0 à 18 446 744 065 119 600 000

Combien de nombres entiers signés au complément de 2 de 8-bit, 16-bit, 32-bit et 64-bit peut-on représenter
Les nombres entiers non signés vont de (-2n-1 à +2n-1-1)

Pour 8 bits les nombres vont de (-27 à +27-1)= -128 à +127


Pour 16 bits les nombres vont de (-215 à +215-1)= - 32768 à + 32767
Pour 32 bits les nombres vont de (-231 à +231-1)= - 2147483648 à + 2147483647
Pour 64 bits les nombres vont de (-263 à +263-1)= - 9 223 372 036 854 775 808 à 9 223 372 036 854 775 808
61
Exercices

Représenter en binaire les valeurs non signés en 8 bits de 88, 0, 1, 127 et 255
88 = 0101 1000, 0 = 0000 0000, 1 = 0000 0001, 127 = 0111 1111, 255 = 1111 1111

Représenter au complément de 2 en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -128 et +127
+88 = 0101 1000, -88 = 1010 1000, -1 = 1111 1111, 0 = 0000 0000, +1 = 0000 0001, -128 = 1000 0000, +127 = 0111 1111

NB. Pour représenter les nombre négatifs, il faut partir du nombre positif, chercher le complément de 1 sans le signe, ajouter 1
pour avoir le complément de 2, mettre 1 comme MSB représentant le signe.

Représenter en signe et module en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -127, and +127
+88=0101 1000, -88=1101 1000, -1=1000 0001, 0=0000 0000 or 1000 0000, +1=0000 0001, -127=1111 1111, +127=0111 1111.

Représenter au complément de 1 en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -127 and +127
+88=0101 1000, -88 =1010 0111, -1=1111 1110, 0=0000 0000 or 1111 1111, +1=0000 0001, -127=1000 0000, +127=0111 1111

62
Corrigés

Nombre entier non signé de 16 bits.


Exercices Si le nombre n’est pas signé, tous les chiffres représentent le module.

Chercher la valeur des deux codes de 16 0000 0000 0010 1010 = 42


bits suivant leur représentation. 1000 0000 0010 1010 = 32810

0000 0000 0010 1010 Nombre entier signé de 16 bits


Le MSB est le signe du nombre, s’il est égale à 0 le nombre est positif
1000 0000 0010 1010 Le reste des chiffres constituent son module
0000 0000 0010 1010 = +42
Nombre entier non signé de 16 bits
Nombre entier signé de 16 bits Le MSB est le signe du nombre, s’il est égale à 1 le nombre est négatif
Deux nombre entiers non signés de 8 bits Pour trouver son module, il faut chercher le complément de 1 sans le
Deux nombre entiers signés de 8 bits Signe et ajouter 1 pour avoir le complément de 2
Un code de caractère Unicode de 16 bits 1000 0000 0010 1010 = nombre négatifs
Deux code ISO-8859-1 de 8 bits 0000 0000 0010 1010 = nombre négatif sans le signe
0111 1111 1101 0101 = 32 725 module complément de 1
+1
0111 1111 1101 0110 = 32 726 module complément de 2
On remet le signe (1) et le nombre devient -32 726
63
Deux nombres entiers non signé de 8 bits.
Si le nombre n’est pas signé, tous les chiffres représentent le module.

0000 0000 = 0 0010 1010 = 42


Exercices 1000 0000 = 128 0010 1010 = 42

Chercher la valeur des deux codes de 16 Deux nombres entiers signés de 8 bits.
bits suivant leur représentation. Si le nombre n’est pas signé, tous les chiffres représentent le module

0000 0000 0010 1010 0000 0000 = +0 0010 1010 = +42


1000 0000 = ? 0010 1010 = +42
1000 0000 0010 1010
1000 0000 est un nombre négatif. On cherche le module sans le signe
Nombre entier non signé de 16 bits en complément de 1 et on ajoute 1 pour avoir le complément de 2
Nombre entier signé de 16 bits 1000 0000
Deux nombre entiers non signés de 8 bits 0111 1111 = 127+1 = 128. Le nombre devient -128
Deux nombre entiers signés de 8 bits
Un code de caractère Unicode de 16 bits Un code de caractère Unicode de 16 bits
Deux code ISO-8859-1 de 8 bits 0000 0000 0010 1010 = « * »
10000000 0010 1010 = '耪’

Deux code ISO-8859-1 de 8 bits


0000 0000 = ‘NUL’ 0010 1010 = « * » 64
1000 0000 = ‘PAD’ 0010 1010 = « * »
Exercices

Comment représenter en binaire le nombre 1 dans le cas suivants:

Nombre entier non signé de 8 bits 0000 0001


Nombre entier signé de 8 bits 0000 0001
Nombre entier non signé de 16 bits 00000000 00000001
Nombre entier signé de 16 bits 00000000 00000001
Nombre entier non signé de 32 bits 00000000 00000000 00000000 00000001
Nombre entier signé de 32 bits 00000000 00000000 00000000 00000001

Comment représenter en binaire le nombre 1.0 dans le cas suivants:

Nombre en virgule flottante de 32 bits 0 1111111 00000000 0000000000000000, S=0, E=127,F=0


Nombre en virgule flottante de 64 bits 0 11111111111 000 00000000 00000000 00000000
00000000 00000000 00000000, S=0, E=1023,F=0
Comment représenter le caractère 1 dans les cas suivants:

Code Latin-1 de 8 bits 00110001 ou 31H


Code UCS-2 00000000 00110001
Code UTF-8 00110001

65
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Convertir les nombres décimaux signés en binaire

-0 = 10
-4 = 1100
-85 = 1101 0101
3,650 = 0000 1110 0100 0010
-475 = 1000 0001 1101 1011
-129,542,144 = 1000 0111 1011 1000 1010 1000 0000 0000
-33 = 1010 0001
2,321 = 0000 1001 0001 0001
7,814,344,875,180,031 = 0000 0000 0001 1011 1100 0011 0001 1010 1111 0010 0110 1111 1111 1111 1111 1111
2,020 = 0000 0111 1110 0100
-9,022,270,416,445,046,111 = 1111 1101 0011 0101 1000 1011 0010 0100 0100 0111 1011 1000 1111 1101 0101 1111
110,001,101 = 0000 0110 1000 1110 0111 1011 1100 1101
4,893 = 0001 0011 0001 1101

66
ARITHMÉTIQUE NUMÉRIQUE

L’addition binaire
La soustraction binaire
La multiplication binaire
La division binaire
Arithmétique décimale
Arithmétique octale
Arithmétique hexadécimale
67
ARITHMÉTIQUE NUMÉRIQUE

Addition binaire
L’addition binaire s’effectue exactement comme l’addition en base 10. C’est l’opération la plus simple de l’arithmétique
binaire. La règle qu’il faut retenir est la suivante :
0+0=0 sans retenue 0+1=1 sans retenue 1+0=1 sans retenue 1+1=0 avec 1 comme retenue
9710+7210=16910
Cette opération effectuée en binaire donne ce qui suit
9710 = 01100001
7210 = 01001000 11001001 1101110
0 1 1 0 0 0 0 1 + 110101 + 100010
0 1 0 0 1 0 0 0
11111110 10010000
1 0 1 0 1 0 0 1 = 16910

68
ARITHMÉTIQUE NUMÉRIQUE

Soustraction binaire utilisant le complément de 1


Soustraire b de a (a-b) revient à additionner a au complément de 1 de b. a-b = a + Ϲ1(b)
Pour chercher le complément de 1 d’un nombre binaire, il faut changer les 1 par les 0 et les 0 par les 1.
97 – 72 +97 - +72 +97 + Ϲ1(+72)
Le signe + est représenté par le chiffre 0
Le signe – est représenté par le chiffre 1
+97 donne 0 1 1 0 0 0 0 1
+72 donne 0 1 0 0 1 0 0 0
Ϲ1(+72) 1 0 1 1 0 1 1 1

L’opération qu’il faut faire est la suivante


+97 0 1 1 0 0 0 0 1
+
Ϲ1(+72) 1 0 1 1 0 1 1 1

= 1 0 0 0 1 1 0 0 0
Le 1 qui déborde sera additionné au résultat pour donner le résultat final
0 0 0 1 1 0 0 1 = +25 69
ARITHMÉTIQUE NUMÉRIQUE

Soustraction binaire utilisant le complément de 2 donnant un résultat positif

Soustraire b de a (a-b) revient à additionner a au complément de 2 de b. a-b = a + Ϲ2(b)


Pour chercher le complément de 2 d’un nombre binaire, il faut changer les 1 par les 0 et les 0 par les 1 ensuite ajouter 1 au résultat obtenu.
97 – 72 +97 - +72 Ϲ
+97 + 2(+72)
Le signe + est représenté par le chiffre 0, le signe – est représenté par le chiffre 1
+97 donne 0 1 1 0 0 0 0 1
+72 donne 0 1 0 0 1 0 0 0
Ϲ1(+72) 1 0 1 1 0 1 1 1

+ 1

Ϲ2(+72) 1 0 1 1 1 0 0 0
L’opération qu’il faut faire est la suivante
+97 0 1 1 0 0 0 0 1
+
Ϲ2(+72) 1 0 1 1 1 0 0 0
70
= 1 0 0 0 1 1 0 0 1 = +25
Le 1 qui déborde ne fait pas partie de l’opération est négligé
ARITHMÉTIQUE NUMÉRIQUE

Soustraction binaire donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : 10110 – 01100


1110110 1000001001
cl1 cl2 cl3 cl4 cl5 - 110101 - 11110011
0 2
1 0 1 1 0 1000001 100010110
0 1 1 0 0
0 1 0 1 0

S’il n’y a pas de difficultés les colonnes 5 (0-0=0), 4(1-0=1) et 3 (1-1=0), pour la deuxième colonne (0-1), ne pouvant pas
soustraire 1 de 0, j’emprunte (borrow) la base 2 du 1 qui se trouve à droite (première colonne). Le 1 de la première colonne
devient 0 (1-1=0) et le 0 de la deuxième colonne devient 2 (la base). Il s’agira de faire l’opération suivante.

0 2 1 1 0
0 1 1 0 0
0 1 0 1 0
71
ARITHMÉTIQUE NUMÉRIQUE

Soustraction binaire donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : 10010 – 111

cl1 cl2 cl3 cl4 cl5


0 2 (1) 1 2 2
1 0 0 1 0
0 0 1 1 1
0 1 0 1 0

Nous allons, avant de démarrer l’opération, compléter la colonne gauche du diminuteur par des 0 non significatifs pour le mettre à la longueur du diminuende.
Colonne 5 (0-1). Ne pouvant pas soustraire 1 de 0, j’emprunte (borrow) la base 2 à la colonne 4, le 1 de la colonne 4 devient 0 et le 0 de la colonne 5 devient 2.
Colonne 4 (0-1). Ne pouvant pas soustraire 1 de 0, j’emprunte (borrow) la base 2 à la colonne 1 qui devient 0. La colonne 2 se retrouve avec un 2. J’emprunte au 2
de la colonne 2 un 1. Il restera 1 à la colonne 2 et la colonne 3 se retrouve avec la base (2). J’emprunte 1 à la colonne 3 qui devient 1 et la colonne 4 devient 2.

Il s’agira de faire l’opération suivante.

0 1 1 2 2
0 0 1 1 1 72
0 1 0 1 1
ARITHMÉTIQUE NUMÉRIQUE

Soustraction binaire donnant un résultat négatif


72-97 = -25 . Faire cette opération revient à additionner +72 + Ϲ2(+97)
+72 donne 0 1 0 0 1 0 0 0
+97 0 1 1 0 0 0 0 1

Ϲ1(+97) 1 0 0 1 1 1 1 0
+ 1
Ϲ2(+97) 1 0 1 0 0 0 0 1

+72 0 1 0 0 1 0 0 0
+
Ϲ2(+97) 1 0 1 0 0 0 0 1

= 1 1 1 0 1 0 0 1 = Résultat intermédiaire
Nous cherchons le complément de 2 du résultat intermédiaire sans le signe (-) que nous remplaçons par le signe (+)
R intermédiaire 1 1 1 0 1 0 0 1
R intermédiaire sans le signe 0 1 1 0 1 0 0 1
Ϲ1R interméd. sans le signe 1 0 0 1 0 1 1 0
+ 1
73
Ϲ2R interméd. sans le signe 1 0 0 1 0 1 1 1 = - 25
ARITHMÉTIQUE NUMÉRIQUE

Multiplication binaire

La multiplication binaire s’effectue comme la multiplication décimale.


La règle à retenir est : 1x1 = 1, 1x0=0, 0x1=0 et 0x0=0. Aucune retenue pour la multiplication.

11 x 12 =132 1110110 101011


11 = 1011 x 11011 x 10011
12 = 1100
'1110110 101011
1011
1100 '1110110 '101011
0000 '0000000 000000
0000
1110110 000000
1011
1011 1110110 101011
----------------------- 110001110010 110001110010 74
1 0 0 0 0 1 0 0 = 132
ARITHMÉTIQUE NUMÉRIQUE

Division binaire
La division binaire s’effectue comme la division décimale. A retenir est : 0-1 = 0 avec 1 comme retenue, 1-0=1, 1-1=0, et 0-0=0.
132/12 1 0 0 0 0 1 0 0 / 1100 On peut supprimer les zéros qui sont à droite de la dividende et du diviseur

1 0 0 0 0 1 11
(R1) (R1)

1 1
-------------
0 0 1 0
0 0 1011 1. Vous regroupez les trois premier chiffres comme 11 est supérieur à 10
---------- 2. 1 x 11 vous donne 11 que vous enlevez de 100 comme ceci :
10 0 0 -1 donne 1 et il reste 1 que vous allez ajouter au premier 1 du 11.
(R1) (R1) 1+1 donne 0, ensuite 0-0 vous donne 0 et vous renvoyez la retenue 1
1 1 110000000110 1110010
--------- 1110010
0 0 1 1 10011100 11011
1 1 1110010
10101011
--------
1110010 75
0 0 11100010
ARITHMÉTIQUE NUMÉRIQUE

L’addition décimale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+ 1+

Base 10 : 3 4 5 8
+
5 6 8 9
9 11 4
1 7
1
1=11-B(0) 4-14-B(10) 7=17-B(10)

A chaque fois que le résultat trouvé dépasse la base (B=10), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 76
ARITHMÉTIQUE NUMÉRIQUE

L’addition octale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+ 1+ 1+

Base 8 : 3 4 5 7
+ 63375 5304
5 6 3 4 + 7465 + 6647
73062 14153
1 1 1 1 3 11 1 3
1=9-B(8) 3=11-B(8) 1=9-B(8) 3=11-B(8)

A chaque fois que le résultat trouvé dépasse la base (B=8), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 77
ARITHMÉTIQUE NUMÉRIQUE

L’addition hexadécimale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+

Base 16 : 3 A B C
+ 89A27 5304
5 6 3 4 + EE54 + CC3B
9887B 11F3F
9 10 F 1 0
0=16-B(16) 0=16-B(16)

A chaque fois que le résultat trouvé dépasse la base (B=16), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 78
ARITHMÉTIQUE NUMÉRIQUE

Soustraction octale donnant un résultat positif


a-b revient à additionner a au complément de 8 de b. a-b = a + Ϲ8(b)
Pour chercher le complément de 8 d’un nombre binaire, il faut changer chaque chiffre par son
complément de telle sorte que l’addition des deux chiffres donne B-1 (7 pour la base 8 ) ensuite
ajouter 1 au résultat obtenu.

N 113138 +11313 011313


- -
M 034578 +03457 003457 On cherche le complément de 7 de M 774320
+1
On cherche le complément de 8 de M 774321

On additionne +N et le complément de 8 de +M 011313


774321
005634 = +05634
79
ARITHMÉTIQUE NUMÉRIQUE

Soustraction octale donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : 5428 – 3478

cl1 cl2 cl3


4 3+8=11 8+2= 10
5 4 2
3 4 7
0 1 0

Colonne 3. Ne pouvant pas enlever 7 de 2, je vais emprunter 1 à la colonne 2 qui devient 3 et la colonne 3 devient la base (8)+2 = 10
Colonne 2. Ne pouvant pas enlever 4 de 3, je vais emprunter 1 à la colonne 1 qui devient 4 et la colonne 2 devient la base (8)+3 =11
4 11 10
3 4 7 52130 145126
1 7 3
- 6643 - 75543
43265 47363
80
ARITHMÉTIQUE NUMÉRIQUE

Soustraction octale donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : 7708 – 4568

cl1 cl2 cl3


6 8
7 7 0
4 5 6
0 1 0

Colonne 3. Ne pouvant pas enlever 6 de 0, je vais emprunter 1 à la colonne 2 qui devient 6 et la colonne 3 devient la base (8)+0 = 8

7 6 8
4 5 6
3 1 2

81
ARITHMÉTIQUE NUMÉRIQUE

Soustraction octale donnant un résultat négatif


a-b revient à additionner a au complément de 8 de b. a-b = a + Ϲ8(b)
Pour chercher le complément de 8 d’un nombre binaire, il faut changer chaque chiffre par son
complément de telle sorte que l’addition des deux chiffres donne B-1 (7 pour la base 8 ) ensuite
ajouter 1 au résultat obtenu.

M 03457 +03457 003457


-
N 11313 +11313 011313 On cherche le complément de 7 de N 766464
+1
On cherche le complément de 8 de N 766465
On additionne +M et le complément de 8 de +N 003457
766465
772144 = Résultat intermédiaire
Nous allons chercher le complément de 8 du résultat sans le signe 072144 = 705633+1 = 705634 = -05634
82
ARITHMÉTIQUE NUMÉRIQUE

Soustraction hexadécimale donnant un résultat positif

M-N revient à additionner M au complément de 16 de N. M-N = M + Ϲh(N)


Pour chercher le complément de 16 d’un nombre hexadécimale, il faut changer chaque chiffre par son
complément de telle sorte que l’addition des deux chiffres donne B-1 (15 pour la base 16) ensuite ajouter 1 au
résultat obtenu.

M 90F0 + 90F0 0 90F0


- - -
N 3ABC + 3ABC 0 3ABC
On cherche le complément de 15 de N 03ABC qui donne FC543 puis le complément de 16 en ajoutant 1 au
complément de 15, ce qui nous donne FC543+1 = FC544 . Il ne nous reste qu’à faire m + Ϲh(n)

090F0
+ FC544
= 1 0 5 6 3 4 = 5634 Le 1 est un débordement qu’il faut ignorer et le 0
83
représente le signe (-)
ARITHMÉTIQUE NUMÉRIQUE

Soustraction hexadécimal donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : 59BAh – 10ACh

cl1 cl2 cl3 cl4


A(10) 26
5 9 B (11) A (10
1 0 A (10 C (12

Colonne 4. Ne pouvant pas enlever C(12) de A (10) je vais emprunter 1 à la colonne 3 qui devient A (10), et la colonne 4 devient la base
(16)+A(10) = 26

5 9 A (10) 26 725B2 45DD3


1 0 A (10 C (12
4 9 0 E
- FF29 - 9BF6
62689 3C1DD
84
ARITHMÉTIQUE NUMÉRIQUE

Soustraction hexadécimal donnant un résultat positif avec


la méthode de l’emprunt de la base à partir de la gauche

Si nous voulons faire la soustraction suivante : FF03h – ABCDh

cl1 cl2 cl3 cl4


E(14) 16 (15) 19
F(15) F(15) 0 3
A(10) B(11) C(12) D(13)

Colonne 4. Ne pouvant pas enlever D(13) de 3 je vais emprunter 1 à la colonne 2 qui devient E (14), et la colonne 3 devient la base (16)+0
Je vais ensuite emprunter 1 à la colonne 3 qui devient 15, et la colonne 4 devient base (16)+3 = 19

F(15) E(14) F(15) 19


A(10) B(11) C(12) D(13)
5 3 3 6

85
ARITHMÉTIQUE NUMÉRIQUE

Soustraction hexadécimale donnant un résultat négatif

N-M revient à additionner N au complément de 16 de M. N-M = N + Ϲh(M)


Comme le résultat sera négatif, il faudra cherche le complément de B du résulta provisoire sans le signe.
N 3ABC + 3ABC 0 3ABC
-
M 90F0 + 90F0 0 90F0
On cherche le complément de 15 de M 090F0 qui donne F6F0F puis le complément de 16 en ajoutant 1 au

complément de 15, ce qui nous donne F6F0F+1 = F6F10 . Il ne nous reste qu’à faire N + Ϲh(M)

03ABC
+ F6F10
= FA9CC 0A9CC qui donne F5633
on cherche le complément de 15 de ce résultat sans le signe
Ensuite le complément de 16 pour avoir le résultat définitif F5633 +1 = F5634 = - 5634

86
ARITHMÉTIQUE NUMÉRIQUE

La multiplication octale
16
X 2
2x1=2 (plus la retenue 1) = 3 34 2x6 (12-8(base) = 4) on retient (1)
16
X 3
3x1=3 (plus la retenue 2) = 5 52 2) on retient (2)
3x6 (18-8-8 =

7506 4327
16 x 243 x 651
X 14 26722 4327
70 36430 26063
16 17214 32412
250 2334622 87
3526357
4x1=4 (plus la retenue 3) = 7 4x6 (24-8-8-8 = 0) on retient (3)
ARITHMÉTIQUE NUMÉRIQUE

La multiplication hexadécimale
1B
X 8
8x1=8 (plus la retenue 5) = D D8 8x11 = (88-(5*16)= 8) on retient (5)
A928 6340
AB x 7D3 x B51

X B4 1FB78 6340

2AC 89708 1F040

759 4A018 443C0

783C
52B83F8 4632740

4xA=40 (plus la retenue 2) = (42-16-16= A(10) 4xB=44 (44-16-16= C) on retient (2)


On retient 2 qu’on reporte.

BxA=110 (plus la retenue 7) = (117-(7*16)= 5 BxB=121 (121-(7*16) = 9) on retient (7) 88


On retient 7 qu’on reporte.
ARITHMÉTIQUE NUMÉRIQUE

La division octale

Elle se fait comme toutes les autres divisions. La maitrise de l’addition, de la


soustraction et de la multiplication octale sont des prérequis qu’il faut avoir. 50064 72
Si nous voulons diviser 50064 par 72, sachant que 50 est plus petit que 72,
nous allons prendre 500 et chercher combien de fois 72 nous pouvons avoir
442 542
dans 500.
366
Il faut éviter de tomber dans le piège 6x7=42 et choisir 6. 42 en décimal est
équivalent de 52 en octal.
350
Nous allons donc choisir 5 qui nous donne 5x72=442 comme suit : 5x2 donne
10 qui est égal à 8 (base)+2. Nos écrivons 2 ensuite retenir 1. 5x7=35 base 10
+ 1 nous donne 36 base 10 qui est l’équivalent de 44 base 8.
164
Nous enlevons 442 de 500 en octal, ce qui nous donne 36, nous abaissons le 6
pour nous retrouver avec 366 qui fait 4 fois 72 = 350 que nous ôtons de 366, il
nous restera 16. Nous abaissons le 4 pour avoir 164 qui faut 2 fois 72 en
octale. 89
ARITHMÉTIQUE NUMÉRIQUE

La division hexadécimale
Elle se fait comme toutes les autres divisions. La maitrise de
l’addition, de la soustraction et de la multiplication hexadécimale
24328 2B
sont des prérequis qu’il faut avoir.

Si nous voulons diviser 24328 par 2B sachant que 2B(11) est


22F D78
supérieur à 24, nous allons prendre 243 et chercher combien de
fois 2B nous pouvons avoir dans 243.
142
Nous allons donc choisir D (13) qui nous donne Dx2B=22F
comme suit : DxB= 13x11=143=(16x8)-15(F). Nous mettons F et
retenir 8. (Dx2)+8 donne 34 qui fait (16x2)+2. Nous écrivons 2 et 12D
retenir 2 que nous abaissons pour avoir 22F. Nous enlevons 22F
de 243 en héxadécimal, ce qui nous donne 14, nous abaissons le
2 pour nous retrouver avec 142. 7x2B donne 12D que nus 158
enlevons de 142 pour avoir 15. Nous abaissons le 8 pour avoir
158 qui fait 8 fois 2B

90
ARITHMÉTIQUE NUMÉRIQUE

Exercices

Convertir en binaire et effectuer les opérations suivantes


124+117 124-117 117-124 -63+110 92+35
114-127 132/11 132/12 5-7 7-5 11x12

Effectuer les opérations suivantes en utilisation le complément de 10


7253210-325010 325010-7253210

Effectuer les opérations suivantes en utilisation le complément de 8


725328-32508 32508-725328

Effectuer les opérations suivantes en utilisation le complément de 16


7253216-325016 325016-7253216
91
ARITHMÉTIQUE NUMÉRIQUE

Exercices
Conversion d'un nombre base 10 en base 2 Conversion d'un nombre base 10 en base 8

84 2 110 8
0 42 2 6 13 8
0 21 2 5 1 8
Faites un tableau Excel qui permet de convertir Reste

LSB Reste 1 10 2
Reste

LSB Reste 1 0

n’importe quel nombre entier base 10 en base 2, Reste 0


Reste
5
1
2
2 2
Reste

MSB
4, 8 et 16 par la méthode de la division Reste 0 1 2
Reste 1 0
successive Reste
MSB

84 base 10 = 1 0 1 0 1 0 0 110 base 10 = 1 5 6

Conversion d'un nombre base 10 en base 4 Conversion d'un nombre base 10 en base 16

105 4 827 16
1 26 4 11 51 16
Reste 2 6 4 Reste 3 3 16
LSB Reste 2 1 4 LSB Reste 3 0
Reste 1 0 Reste

Reste MSB
MSB

92
105 base 10 = 1 2 2 1 827 base 10 = 3 3 B
ARITHMÉTIQUE NUMÉRIQUE

Exercices

Convertir en binaire et effectuer les opérations suivantes


124+117 124-117 117-124 -63+110 92+35
114-127 132/11 132/12 5-7 7-5 11x12

Effectuer les opérations suivantes en utilisation le complément de 10


7253210-325010 325010-7253210

Effectuer les opérations suivantes en utilisation le complément de 8


725328-32508 32508-725328

Effectuer les opérations suivantes en utilisation le complément de 16


7253216-325016 325016-7253216
93
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Addition et Soustraction binaire Soustraction binaire de nombres de 16 bits

Soustraction binaire de nombres de 4 bits 11001011 00101000 - 10011110 01011011 = 101100 11001101
1011 - 1001 = 0010 10111100 10111000 - 10011000 11110011 = 100011 11000101
1100 - 0110 = 0110
1010 - 0011 = 0111
1101 - 1011 = 0010 Addition binaire
1001 - 0111 = 0010
1100 - 1001 = 0011 101 + 11 = 1000
111 + 111 =1110
Soustraction binaire de nombres de 8 bits 1010 + 1010 =10100
11101 + 1010 =100111
11001010 - 10011010 = 00110000 11111 + 11111 =111110
10011100 - 01111001 = 00100011
11001011 - 10000011 = 01001000
11100001 - 10011101 = 01000100
10000001 - 01100110 = 00011011
10010011 - 10000111 = 00001100

94
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Multiplication binaire Exercices : Division binaire

111 * 010 = 1110


1000 / 10 = 100
110 * 011 = 10010
1111 / 11 = 101
101 * 011 = 1111 1100 / 10 = 110
110 * 101 = 11110 1001 / 11 = 11
101 * 101 = 11001 111 / 10 = 11.1
1110 * 0011 = 101010 1100 / 100 = 11
10110 / 100 = 101.1
1101 * 0101 = 1000001
1111 / 101 = 11
0010 * 1101 = 11010 11011 / 110 = 100.1
1010 * 1101 = 10000010 10110 / 110 = 11.1...
101010 / 111 = 110

95
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Addition octale Soustraction octale Division octale Multiplication octale

7327 + 6302 = 15631 5343 - 2401 = 2742 640630 /67 =7450 2577 *12 = 33366
1321 + 5043 = 6364 5353 - 4074 = 1257 133565 /17 =6073 7356 *13 = 122072
3116 + 1741 = 5057 14510 - 4731 = 7557 152066 /56 =2235 5672 *6 = 43134
2672 + 6056 = 10750 7145 - 1361 = 5564 100670 /16 =4504 1247 *72 = 114726
1157 + 2557 = 3736 4715 - 1237 = 3456 155240 /41 =3240 7416 *4 = 36070
1170 + 5217 = 6407 11654 - 6303 = 3351 260362 /45 =4612 6701 *54 = 456454
7406 + 4417 = 14025 6064 - 1915 = 5047 211276 /26 =6175 4455 *12 = 55702
4175 + 5320 = 11515 17337 - 7526 = 7611 25200 /21 =1200 2051 *41 = 104511
4040 + 1154 = 5214 14307 - 5261 = 7026 164420 /60 =2333 4461 *75 = 430255
5166 + 7072 = 14260 7151 - 1304 = 5645 45320 /11 =4120 7046 *22 = 177254
7615 + 7647 = 17464 3006 - 1263 = 1523 500324 /77 =5054 6500 *74 = 615400
7076 + 3734 = 13032 4102 - 2643 = 1237 404266 /46 =6532 5505 *63 = 437277
4124 + 7457 = 13603 11453 - 2122 = 7331 105620 /35 =2320 3363 *61 = 252203
6412 + 6651 = 15263 10057 - 4530 = 3327 26056 /15 =1546 3304 *5 = 20274
6607 + 1152 = 7761 12070 - 6142 = 3726 514654 /54 =7441 2416 *14 = 36250
7614 + 4173 = 14007 12761 - 6431 = 4330 22364 /53 =334 5342 *37 = 250536
7773 + 7601 = 17574 11417 - 7007 = 2410 424224 /54 =6217 540 *24 = 15600
6501 + 6477 = 15200 7323 - 2111 = 5212 36723 /7 =4325 1033 *21 = 21713
7410 + 3040 = 12450 7156 - 4315 = 2641 213177 /61 =2657 6276 *53 = 421752
6773 + 4620 = 13613 12701 - 2733 = 7746 375467 /51 =6137 7503 *44 = 422554
96
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Addition et Soustraction hexadécimal Multiplication et Division hexadécimal

2E9F + 947A = C319 21D3D8 /4C =71F2


9DAD + 6E5E = 10C0B BA0C /6C =1B9
9EF5 + 97BA = 136AF 2C0DC /56 =2235
33F2 + 3A11 = 6E03 100670 /21 =155C
A737 + 695F = 11096 1FA1CC /3A =8B9E
832B + AF1D = 13248 5C0F55 /E7 =DA63
39FB + 33FC = 6DF7 3AD053 /4D =C389
C22A + 3D3D = FF67 590D12 /21 =1200
B881 + FFBD = 1B83E 164420 /83 =AE06

15646 - C89A = 8DAC EEDA *29 =2640EA


112C7 - A76E = 6B59 1479 *38 =47A78
14C21- 5FD3 = EC4E 1B71 *33 =57783
10508 - 60DD = A42B 8901 *18 =CD818
12D92- 7E53 = AF3F FE7E *C4 =C2D878
14D88- 953B = B84D 198B *E6 =16F2E2
C326 - 56C2 = 6C64 7644 *4C =231C30
15805 - C44C = 93B9 9E8F *CD =7EF883
140DD- 690D = D7D0 A14B *FA =9D833E
E3B7 - A538 = 3E7F F61C *A8 =A18260
FF45 - 86CB = 787A 97
ARITHMÉTIQUE NUMÉRIQUE

Exercices

Augmenter les exercices


Conversion
Complément
Représentation
Addition
Soustraction
Multiplication
Division

98
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes

La virgule flottante est une méthode d'écriture de nombres réels fréquemment utilisée dans les ordinateurs.
Elle consiste à représenter un nombre réel par :

Un nombre à virgule flottante comprend deux parties. La mantisse qui représente les chiffres significatifs
(significande) du nombre et l’exposant ou la caractéristique qui représente la puissance à la quelle la base
est élevée.

signe × mantisse × bexposant

Si nous prenons le nombre 13E8, 13 est la mantisse, 8 est l’exposant et 10 est la base, +1 est le signe.
Nous allons donc avoir +13x108 = 1 300 000 000
Pour représenter un nombre en virgule flottante, il faut alors utiliser un exposant et une mantisse signées
124, 23 = 0,124 x 10+3 0,0000687 = +0,678 x10-4 99
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes Représentation des nombre à virgules flottantes

Si nous voulons représenter un nombre binaire sur 8 -13,9 à représenter sur 8 bits
bits, nous avons le MSB qui est le bit de signe et les Le nombre est négatif le bit de signe est 1
autres 7 bits représentent le module ou la valeur 13 en binaire vaut 1101
absolue. Le nombre positif le plus grand sera 01111111 = 0,9 = 0.11100
+127 et le nombre positif le plus petit sera 00000000 = 0. -13,9 donne 1101.11100
Le nombre négatif le plus grand sera 10000000 et le déplacer la virgule vers la gauche de 3 places donne
nombre négatif le plus petit sera 11111111=-127 (1.10111100) 23

(1.10111100) 2(011)
A supposer qu’on veuille stocker 9375, cela devient
impossible. 3 vaut 11 et comme 3 bits sont réservés à l’exposant, nous
complétons à gauche par un zéro non significatif (011)
Pour contourner cette difficulté nous allons utiliser la -13,9 représenté sur 8 bit selon notre hypothèse donne
notation scientifique du nombre qui comprend le signe,
la mantisse et l’exposant.
1 0 011 101
Le 1 à gauche du point est connu , donc pas représenté.
Nous allons hypothétiquement utiliser le MSB comme bit
Ne pouvant pas représenter tous le nombres nous nous limitons à un
de signe, le deuxième bit vers la droite comme signe de
l’exposant, les trois bits qui suivent comme l’exposant et
nombre de 3 chiffres, ce qui va impliquer un imprécision et une 100
erreur.
les trois deniers bits pour la mantisse.
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes


Soit x (-13,9) le nombre à représenter et y (13) sa
Nous allons évaluer l’erreur commise en partant de la représentation en machine, l’erreur relative absolue de la
représentation sur 8 bits représentation est (Et) = |(x-y)/x| et doit être inférieure ou
égale à (Emach).
- (1.101) x 23
(Et) = |(x-y)/x| <= (Emach)
- (1x20 + 1x2-1 + 0x2-2 + 1x2-3) x 8
- (1+0,5+0,125) x 8 = 1,625 x 8 = 13
(Et) = |(-13, 9 – (-13)) / -13,9| = 0,0647 <= 2-3 = 0,125
Nous allons chercher l’erreur relative (Et) et la comparer à
la machine epsilon notée (Emach) qui est définie comme le 0,0647 <= 0,125
plus petit nombre qui donne 1+ (Emach) > 1.

C’est la différence entre 1 et le nombre représentable en


machine qui le suit immédiatement. .
Pour trouver (Emach), nous avons élever 2 à la puissance
négative du nombre de bit utilisé par la mantisse.
Emach = 2-m, ce qui nous donne 2-3 = 0,125
101
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes

En réalité au lieu de stocker le signe de l’exposant sur 1 0 15 exposant ajusté


bit et l’exposant non ajusté sur 3 bits, nous allons utiliser -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 exposant non ajusté
les 4 bits pour stocker l’exposant ajusté (biaisé) qui
représente en même le signe et le module de l’exposant. Si nous avons un exposant que nous voulons ajuster, il
Ceci, tant pour les exposant positif que pour les exposant nous suffit d’ajouter 7 qui est obtenu par 2n-1-1 = 24-1-1
négatifs. N est le nombre de bits réservés pour l’exposant.

Nous savons que sur 4 bits le nombre le plus petit que Ainsi 2-7 ajusté devient 2 (-7+7),= 2(0000)
nous pouvons stocker est 00002=010 et le nombre le plus 23 ajusté devient 2(3+7)= 210 = 2(1010)
grand est 11112=1510 28 ajusté devient 2(8+7)= 215 = 2(1111)
Nous prenons la moyenne entière de 0+15 qui nous
donne 7. -13,9 = - (1.101) x 23 , avec 1 comme bit de signe, 3 comme
Nous allons sur les 4 bits pouvoir représenter les 16 exposant non-ajusté et 101 les 3 bits de la mantisse.
exposants qui vont de -7 à 8 par les 4 bits allant de 0000 Nous allons ajuster l’exposant en ajoutant 7, ce qui nous
à 1111 donne 3+7 = 1010 = 10102
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 102
-13,9 sur 8 bits devient alors 1 1010 101
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombres décimaux à virgules flottantes

La représentation d’un nombre en virgule flottante obéit aux règles suivantes :

La normalisation d’un nombre décimal


Si nous avons un nombre qui s’écrit 0.d1d2…dn x Be
1. La partie entière du nombre doit toujours être égale à 0
2. d1 doit toujours être supérieur à 0, d1>0, et les d allant de 2 à n doivent être supérieurs ou égale à 0.

1,23 x 103 peut s’écrire de plusieurs façon comme celles-ci : 1,23 x 103 , 12,3 x 102 , 123 x 101 , 0,123 x 104
Mais seul la dernière écriture est normalisée parce que la partie entière est 0 et d1 est égale à 1 donc supérieur à 0, d2 et d3 qui sont
respectivement 2 et 3 sont aussi supérieurs ou égale à 0.

La précision
Le nombre peut être représenté de deux manières:
La simple précision (32 bits), et la double précision (64 bits)

103
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombres binaires à virgules flottantes

La représentation d’un nombre binaire en virgule flottante obéit aux règles suivantes :

La normalisation d’un nombre binaire


Si nous avons un nombre qui s’écrit d0.d1d2…dn x Be
1. La partie entière du nombre d0 doit toujours être égale à 1 ou 0 suivi du point.
2. d0 et d1 doivent toujours être opposés. 1.0 ou 0.1 sont bons. 1.1 ou 0.0 ne sont pas acceptés
3. d1 doit toujours être égale à 1 si le nombre est positif, et les d allant de 2 à n peuvent être 1 ou 0
4. d1 doit toujours être égale à 0 si le nombre est négatif, et les d allant de 2 à n peuvent être 1 ou 0

La précision
Le nombre peut être représenté de plusieurs manières:

la simple précision (32 bits) (1,8,23)


la double précision (64 bits) (1,11,52)
la double précision étendue (80 bits) (1,15,64)

104
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombres binaires à virgules


La précision
flottantes selon la norme IEE754
Le nombre peut être représenté de quatre manières:

Le standard IEEE 754 est une norme sur l'arithmétique à La simple précision (32 bits : 1 bit de signe, 8 bits d'exposant (−126 à 127), 24
virgule flottante mise au point par le Institute of Electrical bits de mantisse, dont un bit 1 implicite) ;
and Electronics Engineers. Elle est la norme la plus
employée actuellement pour le calcul des nombres à La simple précision étendue (≥ 43 bits, obsolète)
virgule flottante avec les CPU et les FPU. La norme définit
La double précision (64 bits : 1 bit de signe, 11 bits d'exposant (−1022 à 1023), 53
les formats de représentation des nombres à virgule bits de mantisse, dont un bit 1 implicite) ;
flottante (signe, mantisse, exposant, nombres
dénormalisés) et valeurs spéciales (infinis et NaN), en La double précision étendue (≥ 79 bits, souvent mis en œuvre avec 80 bits : 1 bit de
même temps qu’un ensemble d’opérations sur les nombres signe, 15 bits d'exposant (−16382 à 16383), 64 bits de mantisse, sans bit 1 implicite).
flottants. Il décrit aussi cinq modes d'arrondi et cinq
exceptions (comprenant les conditions dans lesquelles une S 8 bits pour l'exposant e 23 bits pour la mantisse, la partie fractionnaire
exception se produit, et ce qui se passe dans ce cas). S e m

La normalisation d’un nombre binaire IEEE 754 FP 32 = (-1)S x Be-127 x (1.m)


Si nous avons un nombre qui s’écrit d0.d1d2…dn x Be
S 11 bits pour l'exposant E 52 bits pour la mantisse, la partie fractionnaire
S e m
1. La partie entière du nombre d0 doit toujours être égale
S e-1023
à 1. Ce 1 implicite n’est pas stocké en machine. Il faut FP 64 = (-1) x B x (1.m) 105
quand même en tenir compte pour la conversion.
2. Les d allant de 2 à n peuvent être 1 ou 0
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes Représentation des nombre à virgules flottantes

Comment représenter un nombre en virgule flottante sur 32 bits Pour la simple précision, 2 (8-1) – 1 = 127 est le nombre qu’il faut
suivant la norme IEEE 754 ajouter à l’exposant non encore ajusté pour avoir l’exposant réel.

-5,7510 à représenter au format IEEE 754 Pour la double précision, 2 (11-1) – 1 = 1023 est le nombre qu’il faut
ajouter à l’exposant non encore ajusté pour avoir l’exposant réel.
1. Nous commençons par convertir la valeur absolue 5,75 en
binaire qui donne 101,11 Exposant réel = 217+2 = 129 que nous allons convertir en binaire
(1000 0001) sur 8 bits.
2. Ensuite nous déplaçons la virgule de deux places vers la
gauche pour avoir (1,0111) x 22, p=2 4. Il ne nous reste qu’à écrire les 32 chiffres en commençant par 1
qui est le bit de signe, ensuite l’exposant, 129 convertit en binaire,
A ce stade, -5,75 se présente comme suit : puis la mantisse normalisée 1.0111 000 0000 0000 0000 0000 sur
• 1 pour le bit de signe car il est négatif, 23 positions. A noter que le 1 implicite à gauche est à enlever.
• 2 comme exposant non encore ajusté,
• 1,0111 pour la mantisse non encore normalisée. 1-1000 0001-011 1000 0000 0000 0000 0000

3. On cherche l’exposant réel (ajusté) comme suit : Nous allons regrouper ce nombre de 32 bits pour le convertir en
Exposant réel = exposant non ajusté + 2 (8-1) - 1 hexadécimal 106
Exposant réel = 2 + 2 (8-1) – 1 = 2 + 127 1100 0000 1011 1000 0000 0000 0000 000
C 0 B 8 0 0 0 0
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes


Comment représenter un nombre en virgule flottante sur 32 bit suivant la norme IEEE 754
263.3 à représenter

1. Nous allons convertir 263.3 en binaire et cela nous donne 100000111.01001100110011


La partie fractionnaire est cyclique et de fréquence « 0011 »

2. Nous allons ensuite faire la notation scientifique de 263.3 converti en binaire en déplaçant le point d’un certain
nombre de positions qui va donner l’exposant. 100000111.01001100110011
Si nous déplaçons le point de 8 positions juste avant le 1, nous aurons
(1.00000111 01001100110011) x 28

3. Nous allons écrire le nombre suivant la norme IEEE 754 qui dit que le premier bit est le bit de signe. Comme 263.3
est positif, le bit de signe est 0. Les huit bits qui suivent représente l’exposant 8. Dans le format IEEE 754 si l’exposant
est positif ont ajoute 127, si l’exposant est négatif on le soustrait de 127. Notre exposant sera alors 127+8 = 135.

Les 23 places restantes abriterons la mantisse qui représente les chiffres significatifs ou significande ou la partie
fractionnaire. Étant donné qu’elle est cyclique, nous allons prendre les 23 premiers chiffres)
Nous aurons ainsi : signe(0) exposant (10000111) mantisse (00000111 010011001100110) 107

263.3 = 0100 0011 1000 0011 1010 0110 0110 0110 = 4383A666
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes à exposant négatif

-0.015 747 070 312 5 10 à représenter au format IEEE 754

1. Nous allons convertir la partie entière en binaire. 010 = 02


2. Nous allons convertir la partie fractionnaire 0.015 747 070 312 5 10 = 0.0000 0100 0000 12
3. Nous allons normaliser 0.015 747 070 312 5 10 = 0.0000 0100 0000 12 en déplaçant la virgule de 6 places
vers la droite pour atteindre le premier 1, ce qui nous donne 1.00 0000 12 x 2-6
4. L’exposant non ajusté étant de -6, nous allons l’ajuster en ajoutant 127, ce qui nous donne 127-6= 121
121 converti en binaire sur 8 bits nous donne 0111 1001

A ce stade nous avons :


• Le signe (-) représenté par 1
• Les 8 bits de l’exposant réel 0111 1001
• La mantisse 1.00 0000

5. Il ne nous reste qu’à écrire le nombre de 32 bits comme ceci et le convertir ensuite en héxadécimal
1 0111 1001 000 0010 0000 0000 0000 0000 = 1011 1100 1000 0010 0000 0000 0000 0000 = BC820000 108
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes double précision

-10.75 10 à représenter au format IEEE 754 / 64

1. Nous allons convertir la partie entière en binaire. 1010 = 10102


2. Nous allons convertir la partie fractionnaire 0.75 10 = 0.112
3. Nous allons normaliser -10.75 10 = 1010.112 en déplaçant la virgule de 3 places
vers la gauche pour atteindre le premier 1, ce qui nous donne 1.010112 x 23
4. L’exposant non ajusté étant de 3, nous allons l’ajuster en ajoutant 1023, ce qui nous donne 1023+3= 1026
1026 converti en binaire sur 11 bits nous donne 100 0000 0010

A ce stade nous avons :


• Le signe (-) représenté par 1
• Les 11 bits de l’exposant réel 100 0000 0010
• La mantisse 1.01011
5. Il ne nous reste qu’à écrire le nombre de 64 bits comme ceci et le convertir ensuite en hexadécimal
1 - 100 0000 0010 - 0101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = C025800000000000
109
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Représentez les nombres décimales en 32 bits IEEE 754

10.85 = 0 - 1000 0010 - 010 1101 1001 1001 1001 1001


3 235 486 106 = 0 - 1001 1110 - 100 0000 1101 1001 1001 1001
-12.375 = 1 - 1000 0010 - 100 0110 0000 0000 0000 0000
250.5 = 0 - 1000 0110 - 111 1010 1000 0000 0000 0000
867.530 9 = 0 - 1000 1000 - 101 1000 1110 0001 1111 1010
980 = 0 - 1000 1000 - 111 0101 0000 0000 0000 0000
2.292 5 = 0 - 1000 0000 - 001 0010 1011 1000 0101 0001
2.34 = 0 - 1000 0000 - 001 0101 1100 0010 1000 1111
0.124 = 0 - 0111 1011 - 111 1101 1111 0011 1011 0110
8 388 609 = 0 - 1001 0110 - 000 0000 0000 0000 0000 0001
9 922 173 339 = 0 - 1010 0000 - 001 0011 1101 1010 0001 0110
0.178 9 = 0 - 0111 1100 - 011 0111 0011 0001 1000 1111
-0.015 747 070 312 5 = 1 - 0111 1001 - 000 0001 0000 0000 0000 0000
110
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Représentez les nombres décimales en 64 bits IEEE 754

500.32 = 0 - 100 0000 0111 - 1111 0100 0101 0001 1110 1011 1000 0101 0001 1110 1011 1000 0101
9.751 = 0 - 100 0000 0010 - 0011 1000 0000 1000 0011 0001 0010 0110 1110 1001 0111 1000 1101
10 000 000 000 000 000 = 0 - 100 0011 0100 - 0001 1100 0011 0111 1001 0011 0111 1110 0000 1000 0000 0000 0000
-10.75 = 1 - 100 0000 0010 - 0101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
14.79 = 0 - 100 0000 0010 - 1101 1001 0100 0111 1010 1110 0001 0100 0111 1010 1110 0001 0100
18 266 226 688 = 0 - 100 0010 0001 - 0001 0000 0011 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
6 670 = 0 - 100 0000 1011 - 1010 0000 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
206.02 = 0 - 100 0000 0110 - 1001 1100 0000 1010 0011 1101 0111 0000 1010 0011 1101 0111 0000
125.125 = 0 - 100 0000 0101 - 1111 0100 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
8 = 0 - 100 0000 0010 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
28.75 = 0 - 100 0000 0011 - 1100 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
-10.75 = 1 - 100 0000 0010 - 0101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
37.5 = 0 - 100 0000 0100 - 0010 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

111
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes spéciales 3. Si les 8 bits de l’exposant ajusté contiennent tous des 0
(00000000) et que et la mantisse est différente de 0, nous
zéro, des infinis et nombres dénormalisés de la norme IEEE 754 sommes dans le cas de la représentation dénormalisées
permettent de représenter des nombres plus petits que ceux
En dehors des format normalisés, la norme IEEE permet de admis par le format IEEE normalisé. Dans ce cas l’exposant est
représenter le 0, le valeurs infinis et celles qui sont -127 et la mantisse est sous la forme ±0,M.2 ±c . 1.M x 2-127
dénormalisées.
4. Si les 8 bits de l’exposant ajusté contiennent tous des 1
(11111111) et que et la mantisse est différente de 0, nous avons
1. Si les 8 bits de l’exposant ajusté contiennent tous des 0
des erreurs qui peuvent être représentées par des NaNs (Not a
(00000000) et que les 23 bits de la mantisse ne contiennent que
Number). 1.M x 2128 . Les NaNs peuvent être du genre 0/0 ou −1
des 0 (00000000000000000000000), la mantisse est égale à
1.0 et l’exposant est égale à 0-127, ce qui donne -127. Format Valeurs représentées
1.0 x 2-127 = -0 ou +0 suivant que le bit des signe est 1 ou 0.
Normalisé: -126 ≤ c ≤ +127 2-126 à 2128
2. Si les 8 bits de l’exposant ajusté contiennent tous des 1 c = -127, M = 0, S = + ou - + 0 ou - 0
(11111111) et que les 23 bits de la mantisse ne contiennent que c = +128, M = 0, S = + ou - + ∞ ou - ∞
des 0 (00000000000000000000000), la mantisse est égale à 0
c = -127, M ≠ 0, S = + ou - dénormalisé
et l’exposant est égale à 255-127, ce qui donne 128.
1.0 x 2128 = +∞ ou - ∞ suivant que le bit des signe est 1 ou 0 c = +128, M ≠ 0, S = + ou - NaNs
112
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes


Comment convertir un nombre binaire représenté au format IEEE 754 sur 32 en décimal.

0 100 0011 0101 0100 0000 0000 0000 0000

1. Le nombre que nous convertir est positif car commençant par 0 qui le signe.
Les 8 chiffres qui suivent représente l’exposant 100 0011 0 = 134. Étant donné qu’il est supérieur à 127, il est positif.

2. Nous allons chercher l’exposant réel en soustrayant 127 de 134, ce qui donne 7

3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23
1 0 1 0 1 0 0 0000 0000 0000 00 0 0
2-1 2-2 2-3 2-4 2-5 2-22 2-23
0,5 0,25 0,125 0,0625 0,03125
0,5 + 0 + 0,125 + 0 + 0,03125 = 0,65625
113
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,65625)x 27= 212
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes


Comment convertir un nombre binaire représenté au format IEEE 754 sur 32 en décimal.

1000 1000 1000 1000 1000 0000 0000 0000

1. Le nombre que nous convertir est négatif car commençant par 1 qui est le signe.
Les 8 chiffres qui suivent représente l’exposant 000 1000 1= 17. Étant donné qu’il est inferieur à 127, il est négatif.

2. Nous allons chercher l’exposant réel en soustrayant 127 de 17, ce qui donne -110

3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23
0 0 0 1 0 0 0 1 000 0000 0000 0000
2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 ………2-22 2-23
0,5 0,25 0,125 0,0625 0,03125
0 + 0 + 0 + 0,0625 + 0 + 0 + 0 + 0,00390625 = 0,06640625
114
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,06640625)x 2-110= 1,06640625 x 2-110
ARITHMÉTIQUE NUMÉRIQUE

Représentation des nombre à virgules flottantes


Comment convertir un nombre binaire représenté au format IEEE 754 sur 52 en décimal.

0 - 100 0001 1000 - 0111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

1. Le nombre que nous convertir est positif car commençant par 0 qui est le signe.
Les 11 chiffres qui suivent représentent l’exposant ajusté 100 0001 1000 = 1048. Étant donné qu’il est supérieur à
1023, le nombre est supérieur à 0.

2. Nous allons chercher l’exposant réel en soustrayant 1023 de l’exposant ajusté, ce qui nous donne 1048 -1023 = 25

3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23

0 1 1 1 0 0 0 000 0000 0000 0000


2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 ………2-22 2-52
0,5 0,25 0,125 0,0625 0,03125
0 + 0,25 + 0,125 + 0,0625 = 0,4375
115
(-1)S x (1+m) x 2e = (-1)0 x (1+ 0,4375)x 225= 1,4375 x 225 = 48 234 496
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 32/754 suivants

1 - 1000 1001 - 000 0110 0010 1100 0100 0000 = -1 073.382 812 5
0 - 0111 1000 - 111 1111 1001 0111 0010 0000 = 0.015 599 995 851 516 723 632 812 5
1 - 1000 0010 - 010 1001 0000 0000 0000 0000 = -10.562 5
1 - 1100 1011 - 100 0010 0001 1001 0101 0101 = -114 575 798 896 755 891 765 248
0 - 1000 0011 - 001 1110 0000 0000 0000 0000 = 19.75
1 - 1000 0101 - 111 0111 1100 0000 0000 0000 = -123.875
0 - 0000 0000 - 100 0000 0001 1110 1100 0011 = 0
1 - 0000 0111 - 010 0000 0000 0000 0000 0000 = -0.000 000 000 000 000 000 000 000 000 000 000 000 93
0 - 1000 1100 - 110 1101 1011 1100 0000 0000 = 15 215
1 - 1000 0011 - 110 0100 0000 0000 0000 0000 = -28.5
0 - 1111 1101 - 001 0000 0000 0000 0000 0000 = 95 704 415 696 513 942 849 074 108 340 184 809 472
0 - 1000 0011 - 000 1000 0000 0000 0000 0000 = 17
0 - 1000 0010 - 100 0001 1001 1001 1001 1001 = 12.099 999 427 795 410 156 25
116
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 32/754 dénormalisés suivants

Représentation de nombres très petits dénormalisés tendant vers 0


1 - 0000 0000 - 100 0000 0000 0000 0000 0100 = -1.500 000 476 837 158 203 125 × 2-127= -0
1 - 0000 0000 - 111 1111 1111 1111 1111 1111 = -1.999 999 880 790 710 449 218 75 × 2-127= -0
0 - 0000 0000 - 101 0101 0101 0101 0101 0101 = 1.666 666 626 930 236 816 406 25 × 2-127=0

Représentation de O
0 - 0000 0000 - 000 0000 0000 0000 0000 0000 = +0
1 - 0000 0000 - 000 0000 0000 0000 0000 0000 = - 0

Représentation de +∞ et - ∞
0 - 1111 1111 - 000 0000 0000 0000 0000 0000 = + ∞
1 - 1111 1111 - 000 0000 0000 0000 0000 0000 = - ∞

Représentation des NaNs


0 - 1111 1111 - 101 0101 0101 0101 0101 0101 = QNaN (Quiet not à Number) à cause du 1 (set) de la mantisse
1 - 1111 1111 - 001 0101 0101 0101 0101 0101 = SNaN (Signalling not à Number) à cause du 0 (clear) de la mantisse
117
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 64/754 suivants

0 - 100 0000 0100 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 48
0 - 100 0000 0101 - 0011 1001 1100 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 78.451 171 875
1 - 100 0011 0001 - 0111 0001 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 624 528 430 039 040
0 - 100 0000 0100 - 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 62
0 - 100 0001 1000 - 0111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 48 234 496
0 - 100 0000 0000 - 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.5
0 - 100 0000 0000 - 1111 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.937 5
1 - 100 0001 0010 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -524 288
1 - 100 0000 1010 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -3 072
0 - 100 0010 1100 - 1101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 63 771 674 411 008
1 - 011 1111 1111 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1
0 - 100 0100 0000 - 0111 1011 0010 1111 1001 1111 0000 1001 0001 1111 0110 1010 0111 = 54 646 464 651 621 359 616
0 - 100 0000 0000 - 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.25
0 - 100 0000 0001 - 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 5
0 - 000 0000 0001 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 0
0 - 100 0000 0000 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3
1 - 011 1111 1000 - 1110 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -0.014 709 472 656 25
0 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN 118
1 - 100 0000 1001 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 440
0 - 100 0011 0011 - 0101 1111 0111 0001 0001 1110 1011 1000 0101 1001 1110 1011 1001 = 6 182 630 848 831 161
ARITHMÉTIQUE NUMÉRIQUE

Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 64/754 suivants

0 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN
1 - 100 0000 1001 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 440
0 - 100 0011 0011 - 0101 1111 0111 0001 0001 1110 1011 1000 0101 1001 1110 1011 1001 = 6 182 630 848 831 161
1 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN
1 - 111 1111 1111 - 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = S NaN
1 - 111 1111 1111 - 1100 0011 0001 1001 1001 1000 0000 0110 0100 0000 0000 0000 0000 = Q NaN
1 - 100 0011 1000 - 1000 0110 1100 1000 0111 1101 0111 1111 1000 0000 0011 1110 0000 = -219 991 364 505 467 904
0 - 100 0000 0011 - 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 28
0 - 100 0000 1010 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 2 880
0 - 100 0011 1110 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 9 223 372 036 854 775 808
0 - 000 0000 0000 - 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 0000 0000 = 0
1 - 100 0011 1111 - 1000 0111 0101 1100 1001 0110 0000 0000 0000 0000 0000 0000 0000 = -28 200 579 893 431 369 728
1 - 100 0011 0000 - 1000 0011 1110 0110 1010 0011 1111 1100 0000 0101 0000 1010 0010 = -853 003 187 259 924.25
0 - 111 1111 1111 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 0
0 - 100 0001 0001 - 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 294 912
1 - 100 0010 0011 - 1010 0000 0010 0000 0000 1010 1111 1100 1111 0000 0000 0000 0000 = -111 702 749 135
0 - 100 0000 0000 - 0101 1011 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 2.712 890 625
0 - 100 0000 0011 - 1101 1111 1111 1111 1111 1100 0000 0000 0000 0000 0000 0000 0000 = 119
29.999 996 185 302 734 375
0 - 100 0000 0010 - 0110 1101 1011 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 11.428 466 796 875
0 - 100 0000 0011 - 0110 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 22.75
ARITHMÉTIQUE NUMÉRIQUE

Addition des nombres à virgules flottantes 1. Cas ou les exposants sont différents
Nous allons commencer à faire quelques rappels avec la base 1.2232 E+3
10. Si nous devons additionner deux nombres en notation
scientifique. Nous devons nous arranger pour que les exposants
+ 4.211 E+5
soient les mêmes avant de pouvoir additionner les mantisses ou
signifiants. Si les exposants sont différents nous devons les Nous allons convertir le nombre 1.2232 E+3 qui a l’exposant le
égaliser avant de procéder à l’addition. Pour cela nous partons de plus petit pour lui donner un exposant de type E+5 en déplaçant
l’exposant le plus petit pour atteindre l’exposant le plus grand. la virgule vers la gauche de 5-3 = 2 positions.

1.2232 E+3 devient alors 0.012232 E+5


1. Cas ou les exposants sont identiques Nous pouvons additionner 0.012232 E+5 avec 4.211 E+5, ce qui
va nous donner 4.223232 E+5
5.0 E+2 5 x 102 500
+7.0 E+2 +7 x 102 +700 1.2232 E+3 4.211 E+5
12.0 E+2 12 x 102 1200 = 12 E+2 = 1.2 E+3 + 4.211 E+5 = + 0.012232 E+5
4.223232 E+5

120
ARITHMÉTIQUE NUMÉRIQUE

Addition des nombres à virgules flottantes

Nous pouvons effecteur toutes les opérations avec le nombres à virgules flottantes. Nous nous limiterons cependant à
l’addition et à la soustraction. La division et la multiplication seront abordées dans un autre cours.

Addition

Pour additionner ou soustraire deux nombres à virgule flottante, il faut :

1. Égaliser les exposants en alignant l’exposant le plus petit sur l’exposant le plus grand. Ceci peut se faire par le
déplacement de la virgule vers la gauche.

2. Après addition, normaliser le résultat en s’assurant que la partie entière devienne 0 et que d2 soit supérieur à 0

1.1100 x 24 + 1.100 x 22 . Nous allons aligner le terme qui l’exposant le plus petit, 1.1000x 22 devient alors 0.0110 24
1 . 1 1 0 0 x 24
0 . 0 1 1 0 x 24
10. 0 0 1 0 x 24 121
On procède ensuite à la normalisation qui nous donne 0.100010 x 2 6
ARITHMÉTIQUE NUMÉRIQUE

Addition des nombres à virgule flottante de même exposant

S Exposant (8 bits) 23 bits significatifs


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1
b 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0
a+b Les deuxnombres a et b sont positifs et ont le même exposant 1 1 0 1 0 1 1 1 = 21510

Signifiant de a a =1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 x 2215


Signifiant de b b =1. 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 x 2215
Ne jamais oublier le 1.
qui n'est pas stocké a+b = 1 1. 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 x 2215
dans la machine
Nous allons ensuite normaliser le résultat sours la forme 1.xxxxx

a+b = 1. 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 x 2216
Ignoré
Nous allons écrire a+b sous 32 bits en tenant compte du nouveau exposant qui est 216 (1101 1000)

S Exposant (8 bits) 23 bits significatifs


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
122
a+b = 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
ARITHMÉTIQUE NUMÉRIQUE

Addition des nombres à virgule flottante d’exposants différents


S Exposant (8 bits) 23 bits significatifs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1
b 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0
a+b Les deux nombres a et b sont positifs et n'ont pas le même exposant

1 1 0 1 0 1 1 1 Exposant de a = 21510
1 1 0 1 0 0 0 1 Exposant de b = 20910
b qui a le plus petit exposant doit rejoindre a qui a l'exposant le plus grand

Signifiant de a a =1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 x 2215


209
Signifiant de b b =1. 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 x 2

Il faut déplacer la virgule de b vers la gauche de (215-209)=6 positions

Nouveau signifiant de b 0.000001 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 x 2215

Signifiant de a a =1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 x 2215


215
Signifiant de b b =0. 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 x 2
a+b = 1. 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 x 2215

Le résultat est dèjà normalisé


Nous allons écrire a+b sous 32 bits en tenant compte de l'exposant qui est 215 (1101 0111)

S Exposant (8 bits) 23 bits significatifs

a+b =
1
0
2
1
3
1
4
0
5
1
6
0
7
1
8
1
9
1
10 11 12
1 1 1
13 14 15 16
0 1 0 1
17 18 19 20
1 1 0 1
21 22 23 24
1 0 1 0
25 26 27 28
0 0 1 1
29 30 31 32
1 1 1 1
123
ARITHMÉTIQUE NUMÉRIQUE

Addition des nombres à virgule flottante d’exposants différents


S Exposant (8 bits) 23 bits significatifs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1
b 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0
a+b Les deux nombres a et b sont positifs et n'ont pas le même exposant

1 1 0 1 0 1 1 1 Exposant de a = 21510
0 0 0 1 0 0 0 1 Exposant de b = 1710
b qui a le plus petit exposant 17 doit rejoindre a qui a l'exposant le plus grand 215

Signifiant de a a =1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 x 2215


Signifiant de b b =1. 1 0 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 x 217

Il faut déplacer la virgule de b vers la gauche de (215-17)=198 positions


Déplacer sur 198 positions revient à n'avoir que des zéros (0), ce qui donne b=0

Signifiant de a a =1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 x 2215


215
Signifiant de b b =0. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x 2
a+b = a 1. 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 x 2215

Le résultat est dèjà normalisé


Nous allons écrire a+b sous 32 bits en tenant compte de l'exposant qui est 215 (1101 0111)

S Exposant (8 bits) 23 bits significatifs


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a+b = 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 124
ARITHMÉTIQUE NUMÉRIQUE

Arithmétique des nombres à virgules flottantes y normalisé s’écrit 1.100110011001100110011001 x 2-4


y est positif, le MSB, bit de signe est égale à 0
0.110+0.610 = 0.710 L’exposant - 4 est négatif, nous allons avoir - 4+127 comme
exposant biaisé ce qui donne 12310 = 01111011
Nous allons convertir y= 0.110 et y= 0.610 en binaire par la méthode des y = 0 01111011 10011001100110011001100
multiplications successives.
x= 0.610
Pour x nous multiplions la partie fractionnaire par la base (2) et nous gardons
le premier reste comme le MSB. Nous continuons ensuite la multiplication 0.6 x 2 = 1 reste 0.2
jusqu'à obtenir 0 comme multiplicande et nous arrêtons le processus. Il peut 0.2 x 2 = 0 reste 0.4
arriver que la multiplication n’arrive pas à terme, dans ce cas nous allons 0.4 x 2 = 0 reste 0.8
nous retrouver avec une un nombre cyclique et nus allons déterminer la 0.8 x 2 = 1 reste 0.6
fréquence. 0.6 x 2 = 1 reste 0.2
0.2 x 2 = 0 reste 0.4
yx= 0.110 0.4 x 2 = 0 reste 0.8
0.8 x 2 = 1 reste 0.6
0.1 x 2 = 0 reste 0.2
0.2 x 2 = 0 reste 0.4 0.610 donne 0.1001 2
0.4 x 2 = 0 reste 0.8 C’est un nombre cyclique de fréquence 1001
0.8 x 2 = 1 reste 0.6 x normalisé s’écrit 1. 001 1001 1001 1001 1001 1001001 x 2-1
0.6 x 2 = 1 reste 0.2 x est positif, le MSB, bit de signe est égale à 0
0.2 x 2 = 0 reste 0.4 L’exposant - 1 est négatif, nous allons avoir - 1+127 comme exposant biaisé
0.4 x 2 = 0 reste 0.8 ce qui donne 12610 = 01111110 125
0.110 donne 0.00011 2 x= 0 01111110 001 1001 1001 1001 1001 1001
C’est un nombre cyclique de fréquence 0011
ARITHMÉTIQUE NUMÉRIQUE

-1
y = 0.6 = 0.1001100110011001100110011 1.001100110011001100110011 x 2
Le signe de 0.6 est 0
L'exposant biaisé est -1+127 = 126 = 01111110

x = 0.1 = 0.00011 1.1001100110011… x 2-4


Le signe de 0.1 est 0
L'exposant biaisé est -4+127 = 123 = 01111011

S Exposant (8 bits) 23 bits significatifs


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

y+x Les deux nombres y et x sont positifs et n'ont pas le même exposant
Pour additionner ces deux nombres nous allons égaliser les exposants
xe-ye ye
x + y = (x s x 2 + ys) x 2 , avec xe<=ye

y 0. 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 x 2-1
x 1. 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 x 2-1

-1
y+x 1. 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 x 2

Le résultat est dèjà normalisé


Nous allons écrire x+y sous 32 bits en tenant compte de l'exposant
Le signe est 0 car étant le résultat de l'addition de 2 nombres positifs
L'exposant biaisé est -1+127 = 126 = 0111 1110

S
1 2
Exposant (8 bits)
3 4 5 6 7 8 9 10 11 12 13 14 15 16
23 bits significatifs
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
126
0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0
ARITHMÉTIQUE NUMÉRIQUE

Multiplication des nombres à virgule flottante


-0.3 = 0.01001100110011001100110011 1.001100110011001100110011 x 2-2
Le signe de -0.3 est 1
L'exposant biaisé est -2+127 = 125 = 01111101

8
500.25 = 111110100.01 1.1111010001 x 2
Le signe de 500.25 est 0
L'exposant biaisé est 8+127 = 135 = 10000111

S Exposant (8 bits) 23 bits significatifs


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a 1 0 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0
b 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
axb Les deux nombres a et b sont positifs et n'ont pas le même exposant
Pour mulltiplier ses deux nombre, nous allons multiplier les signifiant et additionner les eposants
(ae+be)
axb = (a sxb s)x 2
-2
1. 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 x2
8
x 1. 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 x2

6
1 0. 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 x2
7
1. 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 x2

Le résultat est dèjà normalisé


Nous allons écrire a+b sous 32 bits en tenant compte de l'exposant qui est 215 (1101 0111)
Le signe est 1 car étant le résultat de la multiplication d'un nombre positif et d'un nombre négatif
L'exposant biaisé est 7+127 = 134 = 10000110

S Exposant (8 bits) 23 bits significatifs 127


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

Division des nombres à virgule flottante


a = '91.34375 = 1011011.01011 1.01101101011 x 26
Le signe est 0
L'exposant biaisé est 6+127 = 133 = 10000101

-3
b = '0.14453125 = 0.00100101 1.00101 x 2
Le signe de 500.25 est 0
L'exposant biaisé est -3+127 = 124 = 10000111

S Exposant (8 bits) 23 bits significatifs


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
a 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
b 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
a/b Les deux nombres a et b sont positifs et n'ont pas le même exposant
Pour diviser a/b, nous allons diviser les signifiant et soustraire les exposants
a/b = (a s/b s)x 2 (ae-be)
6
1. 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 x2
: 1. 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x2-3

6-(-3) 9
x 1. 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x2 = 2

Le résultat est dèjà normalisé


Nous allons écrire a:b sous 32 bits en tenant compte de l'exposant qui est 9+127=136= (1000 1000)
Le signe est 0 car étant le résultat de la division de deux nombres positifs

S Exposant (8 bits) 23 bits significatifs


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

128
0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

= 63210
ARITHMÉTIQUE NUMÉRIQUE

Les erreurs dans la représentation des nombres à virgule flottante


Les erreurs relatives, les ulp (unit in the last place) et les machines upsilon

L'erreur d'arrondi étant inhérente au calcul en virgule flottante, il est important de pouvoir la mesurer. Ces erreurs
peuvent être de plusieurs ordres comme les arrondis, des débordements, des nombres non normalisables
(dénormalisé), des non-nombre, des nombres qui tendent vers l’infini,

Il y a plusieurs type de représentations de nombre en virgule flottante, mais les plus connues et les plus utilisées utilisent
des bases paires comme 10, 8, 2, et 16 et une précision p.

Souvent nous travaillons entre les bases 10 et 2. C’est le nombre 0.1 qui pose souvent des problème car s’il s’écrit 0.1
en base décimal, en base binaire sa représentation est cyclique et s’écrit 1.10011001100110011001101 × 2-4
Ces erreurs sont du au fait que cette représentation stock un nombre réel qui des fois peut avoir une infinité de chiffres
dans un format fini de 32 bits en simple précision, de 64 bits en double précision ou de 80 bits en long double précision.

Des fois nous rencontrons des nombres dont le significande ne peut pas être contenu par les 23 position allouées, des
fois nous avons des nombres cycliques ou des nombres irrationnels. 129
ARITHMÉTIQUE NUMÉRIQUE

Les erreurs dans la représentation des nombres à virgule flottante


Les erreurs relatives, les ulp (unit in the last place) et les machines upsilon

Ces erreurs font aussi que les opérations effectuées sur ces nombres ne sont pas souvent associatives et
distributives.

Si nous additions un petit nombre à un grand nombre pour ensuite soustraire le grand nombre, nous nous rendons
compte que le grand nombre dans la représentation absorbe le petit nombre et reste égale à lui même.
(3.14+1E10) - 1E10 = 3.14 + (1E10-1E10).

L’expréssion à gauche va donner 0, car (3.14+1E10) demeure 1E10, 3.14 étant négligeable devant lui.
L’expréssion de droit devient 3.14

Pour la distributivité
1E20 x (1E20 - 1E20) = (1E20 x 1E20) - (1E20 x 1E20)

L’expression de gauche va nous donner 0 et l’expression de droite va nous donner l’infini – l’infini qui reste infini
130
ARITHMÉTIQUE NUMÉRIQUE

Les erreurs dans la représentation des nombres à virgule flottante


Les erreurs relatives, les ulp (unit in the last place) et les machines upsilon

Il y a plusieurs façons d’arrondir:

1. Arrondir à zéro - tronquez simplement les chiffres supplémentaires.


C’est la méthode la plus simple, mais elle introduit des erreurs plus Nombre Vers 0 A moitié 0 Banquier
importantes ainsi qu'un biais vers zéro lorsqu'il s'agit de nombres 1.4 1 1 1
principalement positifs ou principalement négatifs. 1.5 1 2 2
2. Arrondir à la moitié de zéro - si la fraction tronquée est supérieure -1.6 -1 -2 -2
ou égale à la moitié de la base, augmentez le dernier chiffre restant. 2.6 2 3 3
C'est la méthode généralement enseignée à l'école et utilisée par la 2.5 2 3 2
plupart des gens. Il minimise les erreurs, mais introduit également un
biais (loin de zéro).
-2.4 -2 -2 -2
.
3. Arrondir la moitié voire même l’arrondi du banquier - si la fraction
tronquée est supérieure à la moitié de la base, augmentez le dernier
chiffre restant. S'il est égal à la moitié de la base, n'augmentez le
chiffre que si cela donne un résultat pair. Cela minimise les erreurs et 131
les biais et est donc préférable pour la comptabilité.

Vous aimerez peut-être aussi