ARCHITECTURE DES MACHINES NUMÉRIQUESunis.sn/wp-content/uploads/2019/10/REPRESENTATION... · 1 Je...
Transcript of ARCHITECTURE DES MACHINES NUMÉRIQUESunis.sn/wp-content/uploads/2019/10/REPRESENTATION... · 1 Je...
1
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.
ARCHITECTURE DES MACHINES NUMÉRIQUESPR. ELHADJI ISSA SALL, UNIVERSITÉ DU SAHEL
2
ARCHITECTURE DES MACHINES NUMÉRIQUESPR. ELHADJI ISSA SALL, UNIVERSITÉ DU SAHEL
SYLLABUS DU COURS
• la représentation des nombres
• le codage analytique et représentatif
• l’arithmétique numérique
• L’algèbre de Boole et 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
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 33
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 flottante5
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 les machines numériques, textes, nombre, sons,images, vidéos, objets, en l’occurrence par les ordinateurs, puissent être représentés en interne par une succession de chiffresbinaires. 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’estcette base que nous utilisons tous les jours dans tous les domaines. Que ce soit un relevé bancaire, une facture d’électricité, unbulletin 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 nombres2 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 chiffresn’ont pas cependant la même signification pour nous à cause de la place des mêmes chiffres qui les composent. Le nombre9 876 543 120 fait 8 fois le nombre 1 234 567 890.
En fait c’est la place, la position des chiffres qui déterminent sa valeur du nombre qu’ils composent d’où la notion de notationposition.
Un coefficient, une pondération affectée à chaque chiffre du nombre. Le 9 du nombre 1 234 567 890 vaut 90 tandis que 9 dunombre 6 172 839 450 vaut 9 000, le 9 du nombre 9 876 543 120 vaut 9 milliards.
Si la valeur des chiffres diffère suivant leur position, c’est que chaque système possède une base et c’est la base et la positionqui déterminent la valeur d’un chiffre.
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 lagauche sont respectivement multipliés par 10 (101), 100 (102), 1000 (103), 10 000 (103) ect..
8
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
Les systèmes de numérationLes 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 9
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. 10
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 +….. d1b
1 + 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. Enbase 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 de999-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.
11
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
(N)10 = S(cn-1.Bn-1+ cn-2.B
n-2+….c1.B1+ c0B
0 . c-1.B-1+…..c-k.B
k)10
(N)8 = S(cn-1.Bn-1+ cn-2.B
n-2+….c1.B1+ c0B
0 .c-1.B-1+…..c-k.B
k)8
(N)16 = S(cn-1.Bn-1+ cn-2.B
n-2+….c1.B1+ c0B
0 .c-1.B-1+…..c-k.B
k)16
(N)2 = S(cn-1.Bn-1+ cn-2.B
n-2+….c1.B1+ c0B
0. c-1.B-1+…..c-k.B
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
(N)B = S ciBi
0 ≤ ci ≤ (B-1)B 12
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 + c02
0 . 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 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
13
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 courante et la plus utilisée et 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
soustrait de la puissance la plus élevée et le reste par les puissances suivantes.
15
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 que nous voulons convertir
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
12510 = 11111012
16
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 qui consiste à diviser 235 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) du nombre en base 2 que nous cherchons. 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 = 23510On commence par mettre le LSB à droite, ensuite le deuxième reste, le dernier reste (MSB) est à droite du nombre en base 2
17
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
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 123510 = 111010112
18
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
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)
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)
1 7 3 = 24910
On commence par mettre le LSB à droite, ensuite le deuxième reste, le dernier reste (MSB) est à droite du nombre en base 8
Il est possible de chercher les restes en multipliant la partie fractionnaire du resultat 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 19
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 à 162 qui est égale à 256 et donc supérieur ou égale au 125 que nous voulons convertir.
Il ne nous reste qu’à chercher la combinaison uniques, les nombres qu’il faut additionner pour trouver 125.
162 161 160
256 16 1
(7x16) + (13x1)
13 devra être remplacé par la lettre D qui est son équivalent . 125 = (7x16) + (Dx1 = 7D16
20
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 21
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
22
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
23
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 gauche. Si le groupe le plus à droite 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 122 21 20 22 21 20 22 21 20
4 2 1 4 2 1 4 2 1
1 7 5824
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 16 en utilisant la méthode des regroupements
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 gauche. Si le groupe le plus à droite ne fait pas quatre, nous allons le
compléter par des 0 non significatifs.
12510 = 11111012
12510 = 0 1 1 1 1 1 0 123 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1
7 13
7 D16 25
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 8 via la base 10
Si nous voulons convertir 11111012 en base 8, nous
pensons toute de suite le faire par la méthode du
regroupement qui est plus facile et plus directe, mais nous
avons aussi la possibilité de convertir ce nombre en base
10 avant de le convertir en base 8 par la méthode dite des
additions.
11111012 =12510
Pour convertir 12510 en base 8, nous cherchons les
puissance de 8 à partir de 80 jusqu’à obtenir un nombre
supérieur ou égal au 125 que nous voulons convertir.
83 82 81 80
512 64 8 1
1 7 5
11111012 =12510 =1758
26
Conversion de la base 2 à la base 16 via la base 10
Si nous voulons convertir 11111012 en base 16, nous
pensons toute de suite le faire par la méthode du
regroupement qui est plus facile et plus directe, mais nous
avons aussi la possibilité de convertir ce nombre en base
10 avant de le convertir en base 8 par la méthode dite des
additions.
11111012 =12510
Pour convertir 12510 en base 16, nous cherchons les
puissance de 16 à partir de 160 jusqu’à obtenir un nombre
supérieur ou égal au 125 que nous voulons convertir.
162 161 160
256 16 1
7 13(D)
11111012 =12510 =1Dh
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 8 à la base 10 par la
méthode des additions
Pour convertir un nombre octal en décimal, nous
alignons sous le nombre octal les puissances de
8, ensuite nous nous procédons à la
multiplication et à l’addition des résultats
trouvés.
1758 à convertir en en base 10
1 7 5
82 81 80
64 8 1
(64x1) + (8x7) + (1x5)
64+ 56+ 5 = 12510
1758 = 12510
27
Conversion de la base 8 à la base 2 par l’éclatement
8 étant une puissance de 2, comme pour le
regroupement par 3 qui nous a permis de passer de la
base 2 à la base 8, pour passer de la base 8 à la base 2,
nous pouvons procéder à un éclatement ou
dégroupement de chaque élément de la base 8 en 3
chiffres binaires.
Prenons 1758 que nous voulons convertir en base 2.
Nous allons chercher séparément les équivalents binaire
de 1, de 7 et de 5
1 7 5
001 111 101
1758 = 001111101 = 1111101
28
Conversion de la base 8 à la base 16 via la base 10
Nous ne pouvons pas convertir directement un nombre
base 8 en base 16. Il nous faut passer par une base
intermédiaire 2 ou 10.
1758 à convertir en en base 16 via la base 10
1 7 5
82 81 80
64 8 1
(64x1) + (8x7) + (1x5)
64 + 56 + 5 = 12510
Nous allons ensuite convertir 12510 en hexadécimal en
élevant les puissance de 16 à partir de la droite en
commençant par 160 jusqu’à obtenir un nombre
supérieur ou égale à 125 avant de nous arrêter.
162 161 160
256 16 1
7 D
1758 = 12510 = 7Dh
Conversion de la base 8 à la base 16 via la base 2
Nous ne pouvons pas convertir directement un nombre
base 8 en base 16. Il nous faut passer par une base
intermédiaire 2 ou 10.
Prenons 1758 que nous voulons convertir en base 16
via la base 2. Nous allons chercher séparément les
équivalents binaire de 1, de 7 et de 5
1 7 5
001 111 101
1758 = 001111101 = 1111101
Dans un deuxième temps nous allons prendre la
version binaire que nous allons regrouper par 4 pour
avoir l’équivalent hexadécimal
0 1 1 1 1 1 0 1
8 4 2 1 8 4 2 1
7 D
1758 = 1111101 = 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 229
30
Conversion de la base 16 vers la base 10 et 8
Pour convertir un nombre hexadécimal en décimal, nous
alignons sous le nombre hexadécimal les puissances de
16, ensuite nous nous procédons à la multiplication et à
l’addition des résultats trouvés.
7D16 à convertir en en base 10
7 D
161 160
16 1
(16x7) + (1x13)
112 + 13 = 12510
7D16 =12510
12510 peut ensuite être converti en base 8 avec la
méthode des puissances
83 82 81 80
512 64 8 1
1 7 5
7Dh = 1758
Conversion de la base 16 vers la base 2 et 8
16 étant une puissance de 2, pour convertir un nombre
hexadécimal en base, nous procédons par la méthode de
l’éclatement.
7D16 à convertir en en base 2
7 D(13)8 4 2 1 8 4 2 1
0 1 1 1 1 1 0 1
7D = 1111101
La version binaire peut être convertie en octal par
regroupent de 3
7D = 1111101 = 001 111 101
1 7 5
7Dh = 11111012 = 1758
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)BAvec 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 de 2 positive à gauche de la
virgule et les puissances de 2 négative à droite de la virgule
27 26 25 24 23 22 21 20 , 2-1 2-2 2-3 -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
31
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.
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.
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.
163 162 161 160 , 16-1 16-2 16-3
4096 256 16 1 , 0,0625 0,00390625 0,000244140625
7 D , 8
125,510 = 7D,8
32
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 , 10107 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.
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.
33
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 puissance 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,8h34
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
7D,8h =175,48 = 125,510 =1111101,12
35
ARITHMÉTIQUE NUMÉRIQUE
36
2 2
58 2
0 29 2
Reste 1 14 2 MSB
LSB Reste 0 7 2
Reste 1 3 2 LSB
Reste 1 1 2
Reste 1 0
Reste
MSB
58 base 10 = 1 1 1 0 1 0 base 10 1 0 1
1 1 1 0 1 0 . 1 0 1
0,625
0,5 2 1 0
Partie
fractionnaire
du produit
1 0,25
0,25 2 0 0,5
Conversion d'un nombre fractionnaire 58.625
Conversion de la partie entiere d'un nombre base 10 en base Conversion de la partie fractionnaire d'un nombre base 10 en base
0,625
Multiplicande
Partie
fractionnaire
2
multiplicateur
(Base)
Partie entière
du produit
Conversion d’un nombre décimal fractionnaire
en binaire par la méthode des divisions et des
multiplications successives
Pour convertir un nombre factionnaire, il
faut :
1. convertir la partie entière du nombre en
utilisant la méthode des divisions
successives du nombre par la base.
LSB en haut et MSB en bas.
1. Convertir la partie fractionnaire en la
multipliant par la base et en séparant la
partie entière du produit à la partie
fractionnaire du produit. Cette dernière
partie sera encore multipliée par la base
jusqu’à ce qu’on trouve 0. Cette fois-ci,
le MSB se trouve en haut et le LSB en
bas.
ARITHMÉTIQUE NUMÉRIQUE
37
Conversion d’un nombre fractionnaire
cyclique
Pour la partie fractionnaire, il nous arrive
de ne pas trouver 0 après plusieurs
multiplications. Ceci est du essentiellement
au fait que le nombre à convertir n’a pas un
équivalent exacte dans la base choisie (B)
et sa partie fractionnaire est cyclique.
Vous remarquerez qu’un groupe de nombre
se répète à l’infini. Dans ce cas, nous
disons que le nombre à convertir est
cyclique dans la base B de période « les
groupes de nombres qui se répètent »
Dans ce cas, le nombre 58.15 est cyclique
dans la base 2 de période 1001
2 2
58 2
0 29 2
Reste 1 14 2 MSB
LSB Reste 0 7 2
Reste 1 3 2
Reste 1 1 2
Reste 1 0
Reste
MSB
LSB
58 base 10 = 1 1 1 0 1 0 base 10 0 0 1
1 1 1 0 1 0 . 0 0 1 0 0 1 1 0 0 1
0,6 2 1 0,2
0,4 2 0 0,8
0,8 2 1 0,6
0,6 2 1 0,2
0,2 2 0 0,4
2 0 0,8
0,8 2 1 0,6
0,6 2 1 0,2
0,15
0,2 2 0 0,4
0,4
0,15 2 0 0,3
0,3 2 0 0,6
Conversion d'un nombre fractionnaire 58.15
Conversion de la partie entiere d'un nombre base 10 en base Conversion de la partie fractionnaire d'un nombre base 10 en base
Multiplicande
Partie
fractionnaire
multiplicateur
(Base)
Partie entière
du produit
Partie
fractionnaire
du produit
ARITHMÉTIQUE NUMÉRIQUE
38
Tableau des puissances des bases de 10 à -1010
9
8
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1 024
512
256
128
64
32
16
8
4
2
1
0,5
0,25
0,125
0,0625
0,03125
0,015625
0,0078125
0,00390625
0,00195313
0,00097656
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
1 073 741 824
134 217 728
16 777 216
2 097 152
262 144
32 768
4 096
512
64
8
1
0,125
0,015625
0,001953125
0,000244140625
0,000030517578125
0,000003814697265625
0,000000476837158203125
0,0000000596046447753906
0,00000000745058059692383
0,000000000931322574615479
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10 000 000 000
1 000 000 000
100 000 000
10 000 000
1 000 000
100 000
10 000
1 000
100
10
1
0,1
0,01
0,001
0,0001
0,00001
0,000001
0,0000001
0,00000001
0,000000001
0,0000000001
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
16
1 099 511 627 776
68 719 476 736
4 294 967 296
268 435 456
16 777 216
1 048 576
65 536
4 096
256
16
1
0,0625
0,00390625
0,000244141
0,0000152587890625
0,00000095367431640625
0,0000000596046447753906
0,00000000372529029846191
0,00000000023283064365387
0,0000000000145519152283669
0,000000000000909494701772928
10
9
8
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire base 8 vers 10
125,1258 à convertir en en base 10
1 2 5 , 1 2 5
82 81 80 , 8-1 8-2 8-3
64 8 1 , 0,125 0,015625 0,001953125
64+ 16+ 5 , 0,125+ 0,03125+ 0,009765625
125,1258 = 85,1660156210
Conversion d’un nombre fractionnaire base 10 vers 8
85,1660156210 à convertir en base 8
82 81 80 , 8-1 8-2 8-3
64 8 1 , 0,125 0,015625 0,001953125
1 2 5 , 1 2 5
85,1660156210 =125,1258
39
Conversion d’un nombre fractionnaire en base 10 vers
16
125,0625 10 en hexadécimal
162 161 160 , 16-1 16-2
256 16 1 , 0,0625 0,00390625
7 D , 1
125,0625 10 =7D,116
125, 06640625 10 en hexadécimal
162 161 160 , 16-1 16-2
256 16 1 , 0,0625 0,00390625
7 D , 1 1
125,06640625 10 = 7D,1116
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
ExercicesFaire 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 40
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Bibliographie
41
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 négatifs : 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 à 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. La représentation au complément logique et la représentation au
complément arithmétique sot plus simple à implémenter dans les machines.
Comme les symboles + et – occupent une place en machine , autant les remplacer de façon conventionnelle par 0 et
(B-1).
Le premier chiffre d’un nombre, sont chiffre de plus fort poids est considéré comme étant le signe, et le reste des
chiffres vont constituer le module, la valeur absolue du nombre.
A cause de notre familiarité avec la notation classique signe et valeur absolue, il nous arrive des fois 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).
42
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.
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
En base 16, 0 donne le signe + et (16-1)=F donne le signe – N = 034516 -N = F34516
43
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation en module et signe (Sign and Magnitude) d’un nombre binaire de n bits
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)
Sur un format de 4 bits nous pouvons représenter les nombres allant de :
–(24-1 -1) à +(24-1 -1), –(23 -1) à +(23 -1), -7 à +7
-7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 +6 +7
Un inconvénient majeur dans cette représentation est le 0 qui possède deux notations possibles
0000 et 1000.
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.
+6 sur 4 bits s’écrit 0110 et sur 6 bits 000110
-6 sur 4 bits s’écrit 1110 et sur 6 bits 100110 44
N10 N2 -N2 -N10
0 0000 1000 0
1 0001 1001 -1
2 0010 1010 -2
3 0011 1011 -3
4 0100 1100 -4
5 0101 1101 -5
6 0110 1110 -6
7 0111 1111 -7
-(2n-1
-1) à + (2n-1
-1)
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
45
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)k
B = (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
Les nombres qu’on peut représenter vont de – (2n-1-1) à + (2n-1-1)
46
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
La représentation d’un nombre au complément de 1 pose le problème du
zéro qui à une double représentation.
+0 donne 0000. Le complément de 0 qui doit rester 0 s’écrit 1111. Nous
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
S’il s’agit de la base 8, 10 et 16, nous rencontrons les mêmes problèmes.
En base 8, +0 s’écrit 0000 et son complément de 7 est 7777 qui est le -0
En base 10, + 0 s’écrit 0000 et son complément de 9 est 9999 qui est le -0
En base 16, +0 s’écrit 0000 et son complément e 15 est FFFF qui est –0
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.
47
N10 N2 N'2 -N10
0 0000 1111 0
1 0001 1110 -1
2 0010 1101 -2
3 0011 1100 -3
4 0100 1011 -4
5 0101 1010 -5
6 0110 1001 -6
7 0111 1000 -7
– (2n-1
-1) à + (2n-1
-1)
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)BN 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
Les nombres qu’on peut représenter vont de – 2n-1 à + (2n-1-1)
48
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation Base (Radix) ou complément de 10, 8, 16, 2
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
L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à
la postions du MSB et à compléter les autres par 0 pour les nombres positifs et par 1 pour les
nombres négatifs.
+6 sur 4 bits d’écrit 0110 et sur 6 bits 000110
- 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
valeur, nous devons chercher le complément de R du nombre.
Si nous avons 1011 représenté au complément de 2, nous savons que c’est un nombre négatif
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.49
N10 N2 N'2 -N2 -N10
0 0000 1111 0000 0
1 0001 1110 1111 -1
2 0010 1101 11110 -2
3 0011 1100 1101 -3
4 0100 1011 1100 -4
5 0101 1010 1011 -5
6 0110 1001 1010 -6
7 0111 1000 1001 -7
1000 -8
-2n-1
à + (2n-1
-1)
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 :
(-Nr-1)B= (Bn)B - (N)B - (.1)kB (-Nr-1)B+ (.1)k
B = (Bn)B - (N)B = (-Nr)B = (-Nr-1)B+ 1
Pour obtenir le complement B d’un nombre on cherche le complement B-1 et on ajoute 1. 50
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.
51
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
1111 1111 0000 0000 +1 = 0000 0001 =152
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 17Le 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 53
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
Complément F E D C B A 9 8 7 6 5 4 3 2 1 0
54
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices
924.135 est un nombre base 10 exprimé en
notation signe et valeur absolue (sign and
magnitude). Donnez l’équivalent de ce nombre en
complément de 2 binaire.
Le nombre 924.135 commençant par 9 est
négatif, nous allons chercher le nombre positif, le
convertir en binaire et chercher le complément de
1, puis de 2.
924.13510 = -24.13510 , le nombre positif est
+24.135 (024.135) en binaire, ce nombre devient :
0 110 000. 001 000 101
1 001 111. 110 111 010 complément de 1
+ 1
1 100 111 . 110 111 011 complément de 2
55
2 2
24 2
0 12 2
Reste 0 6 2 MSB
LSB Reste 0 3 2
Reste 1 1 2
Reste 1 0 2
Reste 0 0
Reste
MSB
LSB
24 base 10 = 0 1 1 0 0 0 base 10 0 0 1
0 1 1 0 0 0 . 0 0 1 0 0 0 1 0 1 0
Conversion de la partie entiere d'un nombre base 10 en base Conversion de la partie fractionnaire d'un nombre base 10 en base
Multiplicande
Partie
fractionnaire
multiplicateur
(Base)
Partie entière
du produit
Partie
fractionnaire
du produit
0,135 2 0 0,27
0,27 2 0 0,54
0,54 2 1 0,08
0,135
0,08 2 0 0,16
0,16 2 0 0,32
0,32 2 0 0,64
0,64 2 1 0,28
0,28 2 0 0,56
0,24 2 0 0,48
0,56 2 1 0,12
0,12 2 0 0,24
56
Exercices0.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
57
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
58
Exercices
Chercher la valeur des deux codes de 16
bits suivant leur représentation.
0000 0000 0010 1010
1000 0000 0010 1010
Nombre entier non signé de 16 bits
Nombre entier signé de 16 bits
Deux nombre entiers non signés de 8 bits
Deux nombre entiers signés de 8 bits
Un code de caractère Unicode de 16 bits
Deux code ISO-8859-1 de 8 bits
Corrigés
Nombre entier non signé de 16 bits.Si le nombre n’est pas signé, tous les chiffres représentent le module.
0000 0000 0010 1010 = 42
1000 0000 0010 1010 = 32810
Nombre entier signé de 16 bitsLe MSB est le signe du nombre, s’il est égale à 0 le nombre est positif
Le reste des chiffres constituent son module
0000 0000 0010 1010 = +42
Le MSB est le signe du nombre, s’il est égale à 1 le nombre est négatif
Pour trouver son module, il faut chercher le complément de 1 sans le
Signe et ajouter 1 pour avoir le complément de 2
1000 0000 0010 1010 = nombre négatifs
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
59
Exercices
Chercher la valeur des deux codes de 16
bits suivant leur représentation.
0000 0000 0010 1010
1000 0000 0010 1010
Nombre entier non signé de 16 bits
Nombre entier signé de 16 bits
Deux nombre entiers non signés de 8 bits
Deux nombre entiers signés de 8 bits
Un code de caractère Unicode de 16 bits
Deux code ISO-8859-1 de 8 bits
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
1000 0000 = 128 0010 1010 = 42
Deux nombres entiers signés de 8 bits.Si le nombre n’est pas signé, tous les chiffres représentent le module
0000 0000 = +0 0010 1010 = +42
1000 0000 = ? 0010 1010 = +42
1000 0000 est un nombre négatif. On cherche le module sans le signe
en complément de 1 et on ajoute 1 pour avoir le complément de 2
1000 0000
0111 1111 = 127+1 = 128. Le nombre devient -128
Un code de caractère Unicode de 16 bits0000 0000 0010 1010 = « * »
10000000 0010 1010 = '耪’
Deux code ISO-8859-1 de 8 bits0000 0000 = ‘NUL’ 0010 1010 = « * »
1000 0000 = ‘PAD’ 0010 1010 = « * »
60
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
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
61
ARITHMÉTIQUE NUMÉRIQUE
Addition binaireL’addition binaire s’effectue exactement comme l’addition en base 10. C’est l’opération la plus simple de l’arithmétiquebinaire. 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
0 1 1 0 0 0 0 1
0 1 0 0 1 0 0 0
1 0 1 0 1 0 0 1 = 16910
62
11001001 1101110
+ 110101 + 100010
11111110 10010000
ARITHMÉTIQUE NUMÉRIQUE
Soustraction binaire utilisant le complément de 1Soustraire 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 63
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
= 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é
64
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
cl1 cl2 cl3 cl4 cl5
0 2
1 0 1 1 0
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 065
1110110 1000001001
- 110101 - 11110011
1000001 100010110
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
0 1 0 1 1
66
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
Ϲ2R interméd. sans le signe 1 0 0 1 0 1 1 1 = - 2567
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
11 = 1011
12 = 1100
1 0 1 1
1 1 0 0
0 0 0 0
0 0 0 0
1 0 1 1
1 0 1 1
-----------------------
1 0 0 0 0 1 0 0 = 13268
1110110 101011
x 11011 x 10011
'1110110 101011
'1110110 '101011
'0000000 000000
1110110 000000
1110110 101011
110001110010 110001110010
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 1 0 1 1 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 :
1 0 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
---------
0 0 1 1
1 1--------
0 069
1 1 1 0 0 1 0
11011
1 1 1 0 0 0 1 0
1 1 0 0 0 0 0 0 0 1 1 0
1 1 1 0 0 1 0
1 0 0 1 1 1 0 0
1 1 1 0 0 1 0
1 0 1 0 1 0 1 1
1 1 1 0 0 1 0
ARITHMÉTIQUE NUMÉRIQUE
70
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 14 171=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.
ARITHMÉTIQUE NUMÉRIQUE
71
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+
5 6 3 4
1 11 13 11 131=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.
63375 5304
+ 7465 + 6647
73062 14153
ARITHMÉTIQUE NUMÉRIQUE
72
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+
5 6 3 4
9 10 F 100=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.
89A27 5304
+ EE54 + CC3B
9887B 11F3F
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 = +0563473
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
1 7 3
74
52130 145126
- 6643 - 75543
43265 47363
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
75
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
76
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)
0 9 0 F 0
+ F C 5 4 4
= 1 0 5 6 3 4 = 5634 Le 1 est un débordement qu’il faut ignorer et le 0
représente le signe (-)77
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
1 0 A (10 C (12
4 9 0 E
78
725B2 45DD3
- FF29 - 9BF6
62689 3C1DD
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
79
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)
0 3 A B C
+ F 6 F 1 0
= F A 9 C C on cherche le complément de 15 de ce résultat sans le signe 0A9CC qui donne F5633
Ensuite le complément de 16 pour avoir le résultat définitif F5633 +1 = F5634 = - 5634
80
ARITHMÉTIQUE NUMÉRIQUE
La multiplication octale
16
X 2
2x1=2 (plus la retenue 1) = 3 3 4 2x6 (12-8(base) = 4) on retient (1)
16
X 3
3x1=3 (plus la retenue 2) = 5 5 2 3x6 (18-8-8 =2) on retient (2)
16
X 14
7 0
1 6
2 5 0
4x1=4 (plus la retenue 3) = 7 4x6 (24-8-8-8 =0) on retient (3)
81
7506 4327
x 243 x 651
26722 4327
36430 26063
17214 32412
2334622 3526357
ARITHMÉTIQUE NUMÉRIQUE
La multiplication hexadécimale
1B
X 8
8x1=8 (plus la retenue 5) = D D 8 8x11 = (88-(5*16)=8) on retient (5)
AB
X B4
2AC
759
783C
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)
On retient 7 qu’on reporte.
82
A928 6340
x 7D3 x B51
1FB78 6340
89708 1F040
4A018 443C0
52B83F8 4632740
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.
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
dans 500.
Il faut éviter de tomber dans le piège 6x7=42 et choisir 6. 42 en décimal est
équivalent de 52 en octal.
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.
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. 83
5 0 0 6 4 72
4 4 2 542
3 6 6
3 5 0
1 6 4
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
sont des prérequis qu’il faut avoir.
Si nous voulons diviser 24328 par 2B sachant que 2B(11) est
supérieur à 24, nous allons prendre 243 et chercher combien de
fois 2B nous pouvons avoir dans 243.
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
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
enlevons de 142 pour avoir 15. Nous abaissons le 8 pour avoir
158 qui fait 8 fois 2B
84
2 4 3 2 8 2 B
2 2 F D 7 8
1 4 2
1 2 D
1 5 8
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-725321685
ARITHMÉTIQUE NUMÉRIQUE
86
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
Reste 0 21 2 Reste 5 1 8
LSB Reste 1 10 2 LSB Reste 1 0
Reste 0 5 2 Reste
Reste 1 2 2 MSB
Reste 0 1 2
Reste 1 0
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
105 base 10 = 1 2 2 1 827 base 10 = 3 3 B
Exercices
Faites un tableau Excel qui permet de convertir
n’importe quel nombre entier base 10 en base 2,
4, 8 et 16 par la méthode de la division
successive
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-725321687
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Addition et Soustraction binaire
Soustraction binaire de nombres de 4 bits
1011 - 1001 = 0010
1100 - 0110 = 0110
1010 - 0011 = 0111
1101 - 1011 = 0010
1001 - 0111 = 0010
1100 - 1001 = 0011
Soustraction binaire de nombres de 8 bits
11001010 - 10011010 = 00110000
10011100 - 01111001 = 00100011
11001011 - 10000011 = 01001000
11100001 - 10011101 = 01000100
10000001 - 01100110 = 00011011
10010011 - 10000111 = 00001100
88
Soustraction binaire de nombres de 16 bits
11001011 00101000 - 10011110 01011011 = 101100 11001101
10111100 10111000 - 10011000 11110011 = 100011 11000101
Addition binaire
101 + 11 = 1000
111 + 111 =1110
1010 + 1010 =10100
11101 + 1010 =100111
11111 + 11111 =111110
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Division binaire
1000 / 10 = 100
1111 / 11 = 101
1100 / 10 = 110
1001 / 11 = 11
111 / 10 = 11.1
1100 / 100 = 11
10110 / 100 = 101.1
1111 / 101 = 11
11011 / 110 = 100.1
10110 / 110 = 11.1...
101010 / 111 = 110
89
Exercices : Multiplication binaire
111 * 010 = 1110
110 * 011 = 10010
101 * 011 = 1111
110 * 101 = 11110
101 * 101 = 11001
1110 * 0011 = 101010
1101 * 0101 = 1000001
0010 * 1101 = 11010
1010 * 1101 = 10000010
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Addition octale
7327 + 6302 = 15631
1321 + 5043 = 6364
3116 + 1741 = 5057
2672 + 6056 = 10750
1157 + 2557 = 3736
1170 + 5217 = 6407
7406 + 4417 = 14025
4175 + 5320 = 11515
4040 + 1154 = 5214
5166 + 7072 = 14260
7615 + 7647 = 17464
7076 + 3734 = 13032
4124 + 7457 = 13603
6412 + 6651 = 15263
6607 + 1152 = 7761
7614 + 4173 = 14007
7773 + 7601 = 17574
6501 + 6477 = 15200
7410 + 3040 = 12450
6773 + 4620 = 1361390
Soustraction octale
5343 - 2401 = 2742
5353 - 4074 = 1257
14510 - 4731 = 7557
7145 - 1361 = 5564
4715 - 1237 = 3456
11654 - 6303 = 3351
6064 - 1915 = 5047
17337 - 7526 = 7611
14307 - 5261 = 7026
7151 - 1304 = 5645
3006 - 1263 = 1523
4102 - 2643 = 1237
11453 - 2122 = 7331
10057 - 4530 = 3327
12070 - 6142 = 3726
12761 - 6431 = 4330
11417 - 7007 = 2410
7323 - 2111 = 5212
7156 - 4315 = 2641
12701 - 2733 = 7746
Division octale
640630 /67 =7450
133565 /17 =6073
152066 /56 =2235
100670 /16 =4504
155240 /41 =3240
260362 /45 =4612
211276 /26 =6175
25200 /21 =1200
164420 /60 =2333
45320 /11 =4120
500324 /77 =5054
404266 /46 =6532
105620 /35 =2320
26056 /15 =1546
514654 /54 =7441
22364 /53 =334
424224 /54 =6217
36723 /7 =4325
213177 /61 =2657
375467 /51 =6137
Multiplication octale
2577 *12 = 33366
7356 *13 = 122072
5672 *6 = 43134
1247 *72 = 114726
7416 *4 = 36070
6701 *54 = 456454
4455 *12 = 55702
2051 *41 = 104511
4461 *75 = 430255
7046 *22 = 177254
6500 *74 = 615400
5505 *63 = 437277
3363 *61 = 252203
3304 *5 = 20274
2416 *14 = 36250
5342 *37 = 250536
540 *24 = 15600
1033 *21 = 21713
6276 *53 = 421752
7503 *44 = 422554
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Addition et Soustraction hexadécimal
2E9F + 947A = C319
9DAD + 6E5E = 10C0B
9EF5 + 97BA = 136AF
33F2 + 3A11 = 6E03
A737 + 695F = 11096
832B + AF1D = 13248
39FB + 33FC = 6DF7
C22A + 3D3D = FF67
B881 + FFBD = 1B83E
15646 - C89A = 8DAC
112C7- A76E = 6B59
14C21- 5FD3 = EC4E
10508 - 60DD = A42B
12D92- 7E53 = AF3F
14D88- 953B = B84D
C326 - 56C2 = 6C64
15805 - C44C = 93B9
140DD- 690D = D7D0
E3B7 - A538 = 3E7F
FF45 - 86CB = 787A 91
Multiplication et Division hexadécimal
21D3D8 /4C =71F2
BA0C /6C =1B9
2C0DC /56 =2235
100670 /21 =155C
1FA1CC /3A =8B9E
5C0F55 /E7 =DA63
3AD053 /4D =C389
590D12 /21 =1200
164420 /83 =AE06
EEDA *29 =2640EA
1479 *38 =47A78
1B71 *33 =57783
8901 *18 =CD818
FE7E *C4 =C2D878
198B *E6 =16F2E2
7644 *4C =231C30
9E8F *CD =7EF883
A14B *FA =9D833E
F61C *A8 =A18260
ARITHMÉTIQUE NUMÉRIQUE
Exercices
Augmenter les exercices
Conversion
Complément
Representatation
Addition
Soustraction
Multiplication
Division
92
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 93
ARITHMÉTIQUE NUMÉRIQUE
Représentation des nombre à virgules flottantes
La représentation d’un nombre en virgule flottante obéit aux règles suivantes :
La normalisation
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)
94
S
S e m
S
S e m
FP 64 = (-1)S x B
e-1023 x (1.m)
8 bits pour l'exposant e 23 bits pour la mantisse, la partie fractionnaire
11 bits pour l'exposant E 52 bits pour la mantisse, la partie fractionnaire
FP 32 = (-1)S x Be-127 x (1.m)
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)x28
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)
263.3 = 0100 0011 1000 0011 1010 0110 0110 0110 = 4383A666
95
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
-5,7510 à représenter au format IEEE 754
1. On commence par convertir la valeur absolue 5,75 en binaire qui donne 101,110
2. On déplace la virgule de deux place vers la gauche pour avoir (1,01110) x 22, p=2
3. On cherche l’exposant réel qui sera biais+p = 217+2 = 129 que nous allons convertir en binaire (1000 0001)
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, puis la mantisse sur 23 positions.
1 1000 0001 01110 000 000000000000000Nous allons regrouper ce nombre de 32 bits pour le convertir en hexadécimal
1100 0000 1011 1000 0000 0000 0000 000
C 0 B 8 0 0 0 0 96
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
-0,12510 à représenter au format IEEE 754
-0,12510 étant négatif, on peut le représenter comme 10,125. Le MSB 1 est le bit de signe
1. Nous allons convertir 10,125 en binaire et cela nous donne 1010,001, normalisé donne (1.010001)x 23
2. Nous allons ensuite faire la notation scientifique de -0,12510 converti en binaire en déplaçant le point d’un certains
nombres de positions qui va donner l’exposant.
1010,001 Si nous déplaçons le point de 3 positions juste avant le 1, nous aurons (1.010001)x 23
3. Nous allons écrire le nombre suivant la norme IEEE 754 qui dit que le premier bit est le bit de signe. Comme -0,12510
est négatif, le bit de signe est -. 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+3 = 130.
Les 23 places restante abriterons la mantisse qui représente les chiffres significatifs ou significande ou la partie
fractionnaire.
-0,12510 = 1 10000010 010001000000000000000002 = C122000016
97
ARITHMÉTIQUE NUMÉRIQUE
Représentation des nombre à virgules flottantes
Représentation du zéro, des infinis et des représentations dénormalisés suivant
la norme IEEE 754
En dehors des format normalisés, la norme IEEE permet de représenter le 0, le
valeurs infinis et celles qui sont dénormalisées.
0 nous donne en binaire 0. Le signe est quelconque, la mantisse est égale à 0 et
l’exposant est égale à 0-127, ce qui donne -127, ce qui donne un 0 négatif et un
zéro positif.
Les valeurs infinies (+∞ et - ∞) ont comme mantisse 0, comme exposant c=+128.
Le représentation dénormalisés permettent de représenter des nombres plus
petits que ceux admis par le format IEEE normalisé. Dans ce cas l’exposant est -
127 et la mantisse est sous la forme ±0,M.2 ±c
Les erreurs peuvent être représentées par des NaNs (Not a Number) avec
c=+128 et une mantisse non nulle.98
Format Valeurs représentées
Normalisé: -126 ≤ c ≤ +127 2-126 à 2128
c = -127, M = 0, S = + ou - + 0 ou - 0
c = +128, M = 0, S = + ou - + ∞ ou - ∞
c = -127, M ≠ 0, S = + ou - dénormalisé
c = +128, M ≠ 0, S = + ou - NaNs
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
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,65625)x 27= 21299
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
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,06640625)x 2-110= 1,06640625 x 2-110100
ARITHMÉTIQUE NUMÉRIQUE
Addition des nombres à virgules flottantes
Nous allons commencer à faire quelques rappels avec la base
10. Si nous devons additionner deux nombres en notation
scientifique. Nous devons nous arranger pour que les exposants
soient les même avant de pouvoir additionner les mantisses ou
signifiants. Si les exposants sont différents nous devons les
égaliser avant de procéder à l’addition. Pour cela nous partons de
l’exposant le plus petit pour atteindre l’exposant le plus grand.
1. Cas ou les exposants sont identiques
5.0 E+2 5 x 102 500
+7.0 E+2 +7 x 102 +700
12.0 E+2 12 x 102 1200 = 12 E+2 = 1.2 E+3
101
1. Cas ou les exposants sont différents
1.2232 E+3
+ 4.211 E+5
Nous allons convertir le nombre 1.2232 E+3 qui a l’exposant le
plus petit pour lui donner un exposant de type E+5 en déplaçant
la virgule vers la gauche de 5-3 = 2 positions.
1.2232 E+3 devient alors 0.012232 E+5
Nous pouvons additionner 0.012232 E+5 avec 4.211 E+5, ce qui
va nous donner 4.223232 E+5
1.2232 E+3 4.211 E+5
+ 4.211 E+5 = + 0.012232 E+5
4.223232 E+5
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
On procède ensuite à la normalisation qui nous donne 0.100010 x 26102
ARITHMÉTIQUE NUMÉRIQUE
Addition des nombres à virgule flottante de même exposant
103
S
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
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
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
Ne jamais oublier le 1.
qui n'est pas stocké 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
dans la machine
Nous allons ensuite normaliser le résultat sours la forme 1.xxxxx
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
Ignoré
Nous allons écrire a+b sous 32 bits en tenant compte du nouveau exposant qui est 216 (1101 1000)
S
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
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
Exposant (8 bits) 23 bits significatifs
a+b =
a+b =
x 2215
x 2215
x 2215
a+b = x 2216
Exposant (8 bits) 23 bits significatifs
a+b
ARITHMÉTIQUE NUMÉRIQUE
Addition des nombres à virgule flottante d’exposants différents
104
S
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
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
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
Il faut déplacer la virgule de b vers la gauche de (215-209)=6 positions
Nouveau signifiant de b 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 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 0 0 1 1
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
1. 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1
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
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
0 1 1 0 1 0 1 1 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
Exposant (8 bits) 23 bits significatifs
a+b =
a+b =
x 2215
x 2209
x 2215
x 22150.000001
x 2215
Exposant (8 bits) 23 bits significatifs
a+b
ARITHMÉTIQUE NUMÉRIQUE
Addition des nombres à virgule flottante d’exposants différents
105
S
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
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
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
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
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
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
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
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
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
x 2215
Exposant (8 bits) 23 bits significatifs
a+b =
x 2215
x 217
x 2215
x 2215
Exposant (8 bits) 23 bits significatifs
a+b
ARITHMÉTIQUE NUMÉRIQUE
Arithmétique des nombres à virgules flottantes
0.110+0.610 = 0.710
Nous allons convertir y= 0.110 et y= 0.610 en binaire par la méthode des
multiplications successives.
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
jusqu'à obtenir 0 comme multiplicande et nous arrêtons le processus. Il peut
arriver que la multiplication n’arrive pas à terme, dans ce cas nous allons
nous retrouver avec une un nombre cyclique et nus allons déterminer la
fréquence.
yx= 0.110
0.1 x 2 = 0 reste 0.2
0.2 x 2 = 0 reste 0.4
0.4 x 2 = 0 reste 0.8
0.8 x 2 = 1 reste 0.6
0.6 x 2 = 1 reste 0.2
0.2 x 2 = 0 reste 0.4
0.4 x 2 = 0 reste 0.8
0.110 donne 0.00011 2
C’est un nombre cyclique de fréquence 0011
106
y normalisé s’écrit 1.100110011001100110011001 x 2-4
y est positif, le MSB, bit de signe est égale à 0
L’exposant - 4 est négatif, nous allons avoir - 4+127 comme
exposant biaisé ce qui donne 12310 = 01111011y = 0 01111011 10011001100110011001100
x= 0.610
0.6 x 2 = 1 reste 0.2
0.2 x 2 = 0 reste 0.4
0.4 x 2 = 0 reste 0.8
0.8 x 2 = 1 reste 0.6
0.6 x 2 = 1 reste 0.2
0.2 x 2 = 0 reste 0.4
0.4 x 2 = 0 reste 0.8
0.8 x 2 = 1 reste 0.6
0.610 donne 0.1001 2
C’est un nombre cyclique de fréquence 1001
x normalisé s’écrit 1. 001 1001 1001 1001 1001 1001001 x 2-1
x est positif, le MSB, bit de signe est égale à 0
L’exposant - 1 est négatif, nous allons avoir - 1+127 comme exposant biaisé
ce qui donne 12610 = 01111110
x= 0 01111110 001 1001 1001 1001 1001 1001
ARITHMÉTIQUE NUMÉRIQUE
107
y = 0.6 = 0.1001100110011001100110011 1.001100110011001100110011 x 2-1
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
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
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-1
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-4
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
x + y = (xs x 2 xe-ye
+ ys) x 2ye
, avec xe<=ye
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
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. 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-1
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 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
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
x
y
Exposant (8 bits) 23 bits significatifs
y+x
Exposant (8 bits) 23 bits significatifs
y+x
ARITHMÉTIQUE NUMÉRIQUE
108
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
500.25 = 111110100.01 1.1111010001 x 28
Le signe de 500.25 est 0
L'exposant biaisé est 8+127 = 135 = 10000111
S
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
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
axb = (asxbs)x 2 (ae+be)
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-2
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 x28
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 x26
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 x27
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
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
Exposant (8 bits) 23 bits significatifs
Exposant (8 bits) 23 bits significatifs
axb
ARITHMÉTIQUE NUMÉRIQUE
109
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
b = '0.14453125 = 0.00100101 1.00101 x 2-3
Le signe de 500.25 est 0
L'exposant biaisé est -3+127 = 124 = 10000111
S
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
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 = (as/bs)x 2 (ae-be)
1. 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 x26
: 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
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 x26-(-3)
= 29
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
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
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
Exposant (8 bits) 23 bits significatifs
a/b
Exposant (8 bits) 23 bits significatifs
ARITHMÉTIQUE NUMÉRIQUE
110
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’st 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 fous 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.
ARITHMÉTIQUE NUMÉRIQUE
111
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’expréssion de droite va nous donner l’infini – l’infini qui reste infini
ARITHMÉTIQUE NUMÉRIQUE
112
Les erreurs dans la représentation des nombres à virgule flottante
Les erreurs relatives, les ulp (unit in the last place) et les machines upsilon
Nous pouvons arrondir par défaut qui consiste à éliminer le chiffre de trop , par excès qui consiste à faire l’arrondi
au delà de la moiti é de la base ou entre les deux.