Académique Documents
Professionnel Documents
Culture Documents
SYLLABUS DU COURS
• la représentation analytique des nombres
• le codage représentatif
• l’arithmétique numérique
• L’algèbre de Boole
• Les portes logiques élémentaires
• la logique combinatoire
• la logique séquentielle,
• l’unité arithmétique et logique et les microprocesseurs
• les mémoires vives, mortes, virtuelles et de masse
• les périphériques, les interfaces, la connectique
• les classes et types d’ordinateurs
4
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
L’objet du codage analytique est de faire en sorte que les informations traitées par les machines numériques,
textes, nombre, sons, images, vidéos, objets, en l’occurrence par les ordinateurs, puissent être représentées en
interne par une succession de chiffres binaires. L’avantage du binaire réside dans sa simplicité, car n’utilisant
que deux états qui sont symbolisés par 0 et 1.
Nous allons commencer l’apprentissage des systèmes de numération par la base décimale qui nous est très
familière. C’est cette base que nous utilisons tous les jours dans tous les domaines. Que ce soit un relevé
bancaire, une facture d’électricité, un bulletin de salaire, l’heure d’une montre, nous avons affaire à des nombres
composés de 10 chiffres qui vont de 0 à 9.
Si nous prenons le nombre 1 234 567 890, il est composé des dix chiffres de la base décimale comme d’ailleurs
les nombres 2 469 135 780, 4 938 271 560, 6 172 839 450, 8 641 975 230, 9 876 543 120 . Ces nombres qui
utilisent les mêmes chiffres n’ont cependant pas la même signification à cause de la place des chiffres qui les
composent. Le nombre 9 876 543 120 fait 8 fois le nombre 1 234 567 890.
C’est la place, la position des chiffres qui déterminent la valeur du nombre qu’ils composent d’où la notion de
notation positionnelle.
8
Un coefficient, une pondération est affectée à chaque chiffre du nombre. Le 9 du nombre 1 234 567 890 vaut 90
tandis que 9 du nombre 6 172 839 450 vaut 9 000, le 9 du nombre 9 876 543 120 vaut 9 milliards.
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
La signification d’un nombre en notation positionnelle dépend de sa base. En informatique nous sommes
intéressés essentiellement par quatre bases :
la base 2 qui est la base par des microprocesseurs,
la base 10 qui est notre base par défaut
et les bases 8 et 16 qui sont des multiples de 2 et qui nous aident à représenter les nombres de façon plus
conviviale.
Dans ce chapitre, nous allons étudier comment représenter un nombre dans ces quatre bases et comment
passer d’une base à une autre, en somme comment faire la conversion entre bases.
Nous allons travailler avec les nombres à virgule fixe et les nombres à virgule flottante.
Si nous prenons le nombre 14 ¾, en virgule fixe, il peut s’écrire 14.75, mais en virgule flottante, il peut s’écrire
de plusieurs façons suivant la place de la virgule. Ainsi nous pouvons en virgule flottante écrire 14 ¾ comme
suit : 0.1475 102, 1.475 101, 1475 10-2, etc.
11
REPRÉSENTATION DES NOMBRES OU CODAGE ANALYTIQUE
De manière générale tout nombre N de base b et de signe S en virgule fixe s’écrit en représentation polynomiale
(N)B = S(dnbn + dn-1bn-1 +….. d1b1 + d0b0 + d-1b-1 +….. d-kb-k )B
S est signe du nombre,
di est le symbole (chiffre) de rang i, di∈ N et 0 ≤ di ≤ (B-1)B
dn est le symbole de poids le plus fort (MSB=Most Significant Bit) et
d-k est le symbole de poids le plus faible (LSB = Least Significant Bit)
En numérotation positionnelle, le nombre (N)B s’écrit (N)B = S(dn-1 dn-2 …d1 d0 . d-1 d-2 …d-k)B, avec di∈ N et 0 ≤ di ≤ (B-1)B
dn-1 dn-2 …d1 d0 représente la partie entière et d-1 d-2 …d-k représente la partie fractionnaire.
L’écart entre le nombre représentable le plus grand dans une base et le nombre le plus petit constitue son amplitude ou sa
dynamique. En base 10 si nous voulons représenter un nombre sur 3 positions, le nombre le plus grand sera 999 et le plus petit
000, son amplitude est de 999-000 = 999. En base 2 en 3 positions, le nombre le plus grand est 111 (7) et le plus petit 000(0).
La précision ou la résolution quant à elle définit la différence entre deux nombres consécutifs. Elle est de 1 pour les 4 bases
que nous allons étudier.
12
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
(N)B = S ciBi
0 ≤ ci ≤ (B-1)B 13
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
• (N)10 = S(cn-1.10n-1 + cn-2.10n-2 +…. c1. 101 + c0100 . c-1.10-1 +….. c-k. 10-k)10
• (N)8 = S(cn-1. 8n-1 + cn-2. 8n-2 +…. c1. 81 + c080 . c-1. 8-1 +….. c-k. 8-k)8
• (N)16 = S(cn-1.16n-1 + cn-2. 16n-2 +…. c1. 161 + c0160 . c-1. 16-1 +….. c-k. 16-k)16
• (N)2 = S(cn-1.2n-1 + cn-2. 2n-2 +…. c1. 21 + c020 . c-1. 2-1 +….. c-k. 2-k)2
S est le signe, la partie à gauche du point est la partie entière et celle qui est à droite du point est la
partie fractionnaire. A noter que 100 = 80 = 160 = 20 = 1
14
Conversion d’un nombre entier en base 10 vers les autres bases (2, 8, 16)
Pour convertir un nombre entier en base 10 vers un nombre en base B (2, 8 ou 16) nous pouvons utiliser l’une des trois
méthodes suivantes :
La méthode d’élévation des puissances de la base qui consiste à élever les puissances de B (2, 8 ou 16) de droite à
gauche, commençant par B0 (20, 80 ou 160) jusqu’à l’obtention d’un nombre supérieur ou égal au nombre que nous voulons
convertir. Cette méthode est la plus courante et la plus utilisée. Elle se fait en 3 étapes :
1. Élever les puissances de la base de destination de la droite vers la gauche à partir de B0 (20, 80 ou 160)
2. S’arrêter si l’une des puissances de B (2, 8 ou 16) devient égale ou supérieur au nombre décimale à convertir
3. Chercher l’unique combinaison qui donne le nombre à convertir.
4. On mettra 0 au dessous des puissances non utilisés et le coefficient au dessus des puissances utilisées.
La méthode des divisons successives qui consiste à diviser le nombre en base 10 par la base B (2, 8 ou 16) . Le premier
reste de cette division qui ne peut être que compris entre 0 et B-1 va constituer le bit le moins significatif (LSB) du nombre
de la base d’arrivée que nous voulons trouver. Ensuite, nous divisons le résultats obtenu par B, ainsi de suite jusqu’à ce
que l’on est plus rien à diviser. Le derniers reste sera le bit le plus significatif (MSB) du nombre de la base d’arrivée (2, 8
ou 16) que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.
La méthodes des soustractions successives. Cette méthode ressemble un peu à la première et ne peut d’ailleurs se
faire sans elle. Les puissances successives de la base B (2, 8 ou 16) doivent être connues. Le nombre à convertir doit être
15
soustrait de la puissance la plus élevée et le reste par les puissances suivantes.
Conversion d’un nombre décimal en base 2 avec la méthode des puissances
Prenons 12510 que nous voulons convertir en base 2. La base de départ étant 10 et la base de destination 2, nous allons,
à partir de la droite, aligner les puissances de 2 en commençant par 20 jusqu’à obtenir un nombre supérieur ou égal à
125 avant de nous arrêter.
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
Nous nous arrêtons à 27 qui est égale à 128 et donc supérieur ou égale au 125. 128 ne sera pas utilisé, nous allons
commencer par 64. Il ne nous reste qu’à chercher les nombres qu’il faut additionner pour trouver 125. En bas des
puissances utilisées, nous allons mettre 1, et en bas des puissances non utilisées nous allons mettre 0.
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
1 1 1 1 1 0 1
125 = (1x64) + (1x32) +(1x16) +(1x8) + (1x4)+ (0x2) +(1x1) Cette combinaison est unique
16
12510 = 11111012
Conversion d’un nombre décimal en binaire avec méthodes des divisions successives
Prenons le nombre décimal 235 que nous voulons convertir en binaire.
La méthode des divisons successives consiste à diviser 235 par 2, et successivement les quotients entiers par 2. Le premier reste de cette
division qui ne peut être compris qu’entre 0 et 1, les symbole de la base 2, va constituer le bit le moins significatif (LSB) du nombre en base 2
que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 117 par 2, ainsi de suite jusqu’à ce que l’on est plus rien à diviser. Le
derniers reste sera le bit le plus significatif (MSB). Les restes des divisions intermédiaires seront entre le LSB et le MSB.
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
Cette méthode est une dérivée de la méthode des puissances et ne peut d’ailleurs se faire sans elle. Les puissances
successives de la base 2 doivent être connues. Le nombre à convertir doit être soustrait de la puissance la plus élevée et le
reste des puissances suivantes.
Prenons 23510 que nous voulons convertir en base 2. La base de départ étant 10 et la base de destination 2, nous allons
chercher les puissances de 2 jusqu’à obtenir un nombre supérieur ou égal à 125 avant de nous arrêter.
28 27 26 25 24 23 22 21 20
256 128 64 32 16 8 4 2 1
Nous nous arrêtons à 28 qui est égale à 256 et donc supérieur ou égale au 235 que nous voulons convertir. 256 ne sera pas
utilisé car supérieur à 235. Nous allons ensuite soustraire 27 (128) de 235 qui donne 107. Nous allons soustraire 26 (64) de
107 qui donne 43, ensuite 25 (32) de 43 … jusqu’à 20 (1) de 1 qui donne 0.
En bas des puissance de 2 utilisées nous allons mettre 1, et en bas des nombres non utilisés nous allons mettre 0.
28 27 26 25 24 23 22 21 20
256 128 64 32 16 8 4 2 1
235-128 = 107 107-64=43 43-32=11 11-8=3 3-2=1 1-1=0
1 1 1 0 1 0 1 1
18
23510 = 111010112
Conversion d’un nombre décimal en nombre octal par la méthode des puissances
83 82 81 80
512 64 8 1
Nous nous arrêtons à 83 qui est égale à 512 et donc supérieur ou égale au 125 que nous voulons convertir. Nous n’allons
pas utiliser 512. Nous commencerons par 64. combien de fois 64 nous pouvons avoir dans 125, 1 seule fois. 215-64 égale
61. Combien de fois 8 nous pouvons avoir dans 61, 7 fois. 61-56 = 5. Combien de fois nous pouvons avoir 1 dans 5, 5 fois.
Il ne nous reste qu’à chercher la combinaison unique, les nombres qu’il faut additionner pour trouver 125.
83 82 81 80
512 64 8 1
125 = (1x64) + (7x8) + (5x1)
19
12510 = 1758
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en octal par la méthodes des divisions successives
Prenons le nombre décimal 249 que nous voulons convertir en octal avec la méthode des divisons successives.
Nous allons diviser 249 par 8 . Le premier reste de cette division qui ne peut être 0, 1, 2, 3, 4, 5, 6 ou 7, les symbole de la base 8, va
constituer le bit le moins significatif (LSB) du nombre en base 8 que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 31
par 8 qui nous donne 3 avec 7 comme reste. 3 sera ensuite divisé par 8 et va donner 0 et 3 comme reste. Ce dernier reste sera le bit le
plus significatif (MSB) du nombre en base 8 que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.
On commence par mettre le LSB à droite, ensuite le deuxième reste, le dernier reste (MSB) est à gauche du nombre en base 8
Il est possible de chercher les restes en multipliant la partie fractionnaire du résultat par la base 8
249/8 = 31.125 la partie entière est 31 et la partie décimale est .125 que nous multiplions par 8 pour trouver le reste en octal .125 x 8 donne 1
31/8 = 3.875 la partie entière est 3 et la partie décimale est .875 que nous multiplions par 8 pour trouver le reste en octal .875 x 8 donne 7
3/8 = 0.375 la partie entière est 0 et la partie décimale est .375 que nous multiplions par 8 pour trouver le reste en octal .375 x 8 donne 3 20
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en nombre hexadécimal par la méthode des puissances
Prenons 12510 que nous voulons convertir en base 16.
Combien e fois 16 nous pouvons avoir dans 125, 7 fois. 125- (7x16) = 13. Combien de fois nous pouvons avoir 1 dans 13, 13 fois.
Il ne nous reste qu’à chercher la combinaison unique, les nombres qu’il faut additionner pour trouver 125.
162 161 160
256 16 1
(7x16) + (13x1)
21
13 devra être remplacé par la lettre D qui est son équivalent . 125 = (7x16) + (Dx1 = 7D16
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre décimal en hexadécimal par la méthodes des divisions successives
Prenons le nombre décimal 476 que nous voulons convertir en hexadécimal avec la méthode des divisons
successives. Nous allons diviser 476 par 16 . Le premier reste de cette division qui ne peut être que 0, 1, 2, 3, 4, 5, 6
7, 8, 9, A, B, C, D, E et F les symbole de la base 16, va constituer le bit le moins significatif (LSB) du nombre en base
16 que nous voulons trouver. Ensuite, nous divisons le résultat obtenu 29 par 16 qui nous donne 1 avec 13 comme
reste. 1 sera ensuite divisé par 16 et va donner 0 et 1 comme reste. Ce dernier reste sera le bit le plus significatif (MSB)
du nombre en base 16 que nous cherchons. Les restes des divisions intermédiaires seront entre le LSB et le MSB.
476/16 = 29.75 la partie entière est 29 et la partie décimale est .75 que nous multiplions par 16 pour trouver le reste en hexadécimal .75 x 16 donne 12 (C)
29/16 = 1.8125 la partie entière est 1 et la partie décimale est .8125 que nous multiplions par 16 pour trouver le reste en hexadécimal .8125 x 16 donne 13 (D)
1/16 = 0.0625 la partie entière est 0 et la partie décimale est .0625 que nous multiplions par 16 pour trouver le reste en hexadécimal .0625 x 16 donne 1 22
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 vers les autres bases
Il y a trois méthodes pour passer de la base 2 vers les autres bases (10, 8 et 16).
La première méthode applicable à la conversion de la base 2 vers la base 10 est la méthode dite des additions qui consiste à :
1. écrire le nombre en base 2 et aligner les puissance de la base 2 au dessus du nombre binaire.
2. procéder à la multiplication des puissances de la base 2 par les nombres de la base 2 qui sont au dessus.
3. additionner les résultats issus des multiplications.
La deuxième méthode, celle du regroupement, s’applique aux base 8 et 16 qui sont des puissances de 2. Elle consiste à regrouper à
partir de la gauche les chiffres de la base 2 par 3 ou 4 suivant qu’il s’agisse de les convertir en octal ou en hexadécimal.
1. Convertir le nombre binaire en décimal par la méthode des additions, puis le convertir en octal ou en hexadécimal
2. Convertir le nombre binaire en octal ou en hexadécimal par la méthode des regroupement, puis le convertir en décimal
23
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 vers la base 10 par la méthode des additions
Pour convertir un nombre binaire en décimal, nous alignons sous le nombre binaire les puissances de 2, ensuite nous nous procédons à
la multiplication et à l’addition des résultats trouvés.
1 1 1 1 1 0 1
26 25 24 23 22 21 20
64 32 16 8 4 2 1
64 + 32 + 16 + 8 + 4 + 0 + 1= 12510
24
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 8 par la méthode des regroupements
Nous savons que 8 = 23. Si nous avons un nombre décimal déjà converti en base 2 que nous pouvons le convertir directement en
base 8 sans passer par la méthode des puissances, il nous suffit simplement de faire des regroupements par 3.
Si nous voulons convertir 12510 en octal, nous allons prendre la conversion binaire de 125 et nous allons procéder aux
regroupements de 3 à partir de la droite. Si le groupe le plus à gauche ne fait pas trois, nous allons le compléter par des 0 non
significatifs.
12510 = 11111012
12510 = 0 0 1 1 1 1 1 0 1
22 21 20 22 21 20 22 21 20
4 2 1 4 2 1 4 2 1
1 7 58 25
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 16 en utilisant la méthode des regroupements
Sachant que 16 = 24, , si nous voulons convertir 12510 en hexadécimal, nous allons prendre la conversion binaire de
125 et nous allons procéder aux regroupements de 4 à partir de la droite. Si le groupe le plus à gauche ne fait pas
quatre, nous allons le compléter par des 0 non significatifs.
12510 = 11111012
12510 = 0 1 1 1 1 1 0 1
23 22 21 20 23 22 21 20
8 4 2 1 8 4 2 1
7 13
7 D16 26
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 2 à la base 8 via la base 10 Conversion de la base 2 à la base 16 via la base 10
Si nous voulons convertir 11111012 en base 8, nous Si nous voulons convertir 11111012 en base 16, nous
pensons toute de suite le faire par la méthode du pensons toute de suite le faire par la méthode du
regroupement qui est plus facile et plus directe, mais nous regroupement qui est plus facile et plus directe, mais nous
avons aussi la possibilité de convertir ce nombre en base avons aussi la possibilité de convertir ce nombre en base
10 avant de le convertir en base 8 par la méthode dite des 10 avant de le convertir en base 8 par la méthode dite des
additions. additions.
Pour convertir 12510 en base 8, nous cherchons les Pour convertir 12510 en base 16, nous cherchons les
puissance de 8 à partir de 80 jusqu’à obtenir un nombre puissance de 16 à partir de 160 jusqu’à obtenir un nombre
supérieur ou égal au 125 que nous voulons convertir. supérieur ou égal au 125 que nous voulons convertir.
Nous ne pouvons pas convertir directement un nombre Nous ne pouvons pas convertir directement un nombre
base 8 en base 16. Il nous faut passer par une base base 8 en base 16. Il nous faut passer par une base
intermédiaire 2 ou 10. intermédiaire 2 ou 10.
1758 à convertir en en base 16 via la base 10 Prenons 1758 que nous voulons convertir en base 16
via la base 2. Nous allons chercher séparément les
1 7 5 équivalents binaire de 1, de 7 et de 5
82 81 80 1 7 5
64 8 1
001 111 101
(64x1) + (8x7) + (1x5)
64 + 56 + 5= 12510
1758 = 001111101 = 1111101
Nous allons ensuite convertir 12510 en hexadécimal en
élevant les puissance de 16 à partir de la droite en Dans un deuxième temps nous allons prendre la
commençant par 160 jusqu’à obtenir un nombre version binaire que nous allons regrouper par 4 pour
supérieur ou égale à 125 avant de nous arrêter. avoir l’équivalent hexadécimal
0 1 1 1 1 1 0 1
162 161 160 8 4 2 1 8 4 2 1
256 16 1 7 D
7 D 1758 = 1111101 = 7Dh
29
1758 = 12510 = 7Dh
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion de la base 16 vers les autres bases
Il y a trois méthodes pour passer de la base 16 vers les autres bases (2, 8 et 10).
La première méthode applicable à la conversion de la base 16 vers la base 10 est la méthode dite des additions qui
consiste à :
1. écrire le nombre en base 16 et aligner les puissance de la base 16 au dessous.
2. procéder à la multiplication des puissances de la base 16 par les chiffres hexadécimaux qui sont au dessus.
3. additionner les résultats issus des multiplications.
La deuxième méthode, applicable à la base 2 est celle de l’éclatement séparée des chiffres hexadécimaux en groupe de
4 symboles binaires.
Pour convertir un nombre hexadécimal en décimal, nous 16 étant une puissance de 2, pour convertir un nombre
alignons sous le nombre hexadécimal les puissances de hexadécimal en base, nous procédons par la méthode de
16, ensuite nous nous procédons à la multiplication et à l’éclatement.
l’addition des résultats trouvés.
7D16 à convertir en en base 2
7D16 à convertir en en base 10
7 D
7 D(13)
8 4 2 1 8 4 2 1
161 160
0 1 1 1 1 1 0 1
16 1
(16x7) + (1x13)
7D = 1111101
112 + 13 = 12510
7D16 =12510 La version binaire peut être convertie en octal par
12510 peut ensuite être converti en base 8 avec la regroupent de 3
méthode des puissances
7D = 1111101 = 001 111 101
83 82 81 80 1 7 5
512 64 8 1
1 7 5
7Dh = 11111012 = 1758
7Dh = 1758 31
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire
Jusqu’à présent nous avons converti des nombres entiers. Nous allons maintenant convertir des nombres fractionnaires.
Rappel. Tout nombre N de base B avec un signe S en virgule fixe peut s’inscrire
(N)B = S(dn-1 dn-2 …d1 d0 , d-1 d-2 …d-k)B
Avec 0 <= di <= (B-1)
La méthode est la même mais à droite de la virgule, nous avons des puissances négatives
Si nous voulons convertir 125,510 en binaire, nous allons élever les puissances de 2 positives à gauche de la virgule
et les puissances de 2 négatives à droite de la virgule
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
NB. Pour les regroupements de la partie entière, il faut partir du LSB vers le MSB. A partir de la virgule vers la gauche.
Les zéros non significatifs pour compléter le groupe sont à gauche.
34
Pour les regroupements de la partie fractionnaire, il faut partir du MSB vers le LSB. A partir de la virgule vers la droite.
Les zéros non significatifs pour compléter le groupe sont à droite.
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Conversion d’un nombre fractionnaire octal vers les autres bases
Pour convertir 175,48 en décimal, il faut mettre les puissances de 8 sous le nombre octal, faire la multiplication puis l’addition
1 7 5 , 4
82 81 80 , 8-1
64*1=64 + 8*7=56 + 1*5=1 , 0,125 *4=0,5 175,48 = 125,510
Pour convertir 175,48 en binaire, il faut éclater 1, 7, 5 et 4 en groupe de 3 en tenant compte de la virgule. Les 0 du début de la partie entière ne
comptent pas de même que les 0 de fin de la partie fractionnaire.
1 7 5 , 4
001 111 101 , 100 175,48 =1111101 ,1
Pour convertir 175,48 en hexadécimal, il faut éclater 1, 7, 5 et 4 en groupe de 3 en tenant compte de la virgule pour avoir le binaire qui sera ensuite
regroupé en 4 pour avoir l’héxadécimal.
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.
58 2 Multiplicande
multiplicateur Partie entière
Partie
Pour convertir un nombre factionnaire, il Partie fractionnaire
faut : 0 29 2 fractionnaire
(Base) du produit
du produit
1. convertir la partie entière du nombre en Reste 1 14 2 0,625 2 1 0,25 MSB
utilisant la méthode des divisions LSB Reste 0 7 2 0,25 2 0 0,5
successives du nombre par la base. Reste 1 3 2 0,5 2 1 0 LSB
LSB en haut et MSB en bas. Reste 1 1 2
Reste 1 0
1. Convertir la partie fractionnaire en la Reste
multipliant par la base et en séparant la MSB
partie entière du produit à la partie
fractionnaire du produit. Cette dernière
partie sera encore multipliée par la base 58 base 10 = 1 1 1 0 1 0 0,625 base 10 1 0 1
jusqu’à ce qu’on trouve 0. Cette fois-ci, 37
le MSB se trouve en haut et le LSB en 1 1 1 0 1 0 . 1 0 1
bas.
ARITHMÉTIQUE NUMÉRIQUE
Tableau des puissances des bases 16, 10, 8 et 2 des puissance de 10 à -10
10 1 099 511 627 776 16 10 000 000 000 10 1 073 741 824 8 1 024 2 10
9 68 719 476 736 16 1 000 000 000 10 134 217 728 8 512 2 9
2 256 16 100 10 64 8 4 2 2
1 16 16 10 10 8 8 2 2 1
0 1 16 1 10 1 8 1 2 0
Conversion d’un nombre fractionnaire base 8 vers 10 Conversion d’un nombre fractionnaire en base 10 vers 16
125,1258 à convertir en en base 10
125,0625 10 en hexadécimal
1 2 5 , 1 2 5
82 81 80 , 8-1 8-2 8-3 162 161 160 , 16-1 16-2
64 8 1 , 0,125 0,015625 0,001953125 256 16 1 , 0,0625 0,00390625
64+ 16+ 5 , 0,125+ 0,03125+ 0,009765625 7 D , 1
Problèmes Solutions
A. 727 10 en octal 13278
B. 2803 10 en hexadécimal AF3
C. 0,101012 en base 10 0,6562510
D. 0,ABC en base 10 0,670810
E. 0,74210 en octal 0,57378
F. 0,432110 en hexadécimal 0,6E9E
G. 1254,173 10 en octal 2346,13048
H. A73,4F2 en octal 5163,23628
I. 127,7510 en binaire 1111111,112
J. 307,1810 en binaire 100110011,00101112
K. 3AF2 en décimal 1509010
L. 10110112 en décimal 9110
M. 1254,173 10 en binaire 10 011 100 110.001 011 000 12
N. 0,711 8 en décimal 0,89210
O. 7428 en décimal 48210
P. 742.711 8 en décimal 482.8928 41
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Bibliographie
Mowle, Frederic J., A systematic approach to digital logic design. Reading, Massachussetts: Addison-Wesley publishing company, Inc, 1976.
Flores, I., The logic of computer arithmetic. Englewood Cliffs, NJ : Prentice-Hall, 1963
Harris, David, M and Sarah, L., Digital design and computer architecture, 2nd ed., Waltham, Massachussetts: Morgan Kaufmann, 2013.
Hennesey, J.L, et Patterson, D.A. : Architecture des ordinateurs: une approche quantitative, 3e éd., Paris : Vuibert 2003
Gilmore, C. M.., Le fonctionnement des microprocesseurs: l’avant programmation., Paris, Dunod 1984
Zanella, P,.Ligier, Y., Lazard, E. Architecture et technologie des ordinateurs: cours et exercices corrigés, 5e ed., Paris, Dunod 2013
Carter, N.P. Architecture de l’ordinateur, Paris, Dunod 2002S
Schwarz, J. J. Architecture des ordinateurs, Paris, Eyrolles 2005
42
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Représentation des nombres signés
Jusqu’à présent nous avons travaillé avec les nombres positifs. Dans ce chapitre, nous allons étudier les 3 méthodes
les plus utilisées pour la représentation des nombres signés : La représentation en signe et valeur absolue, la
représentation au complément logique ou restreint (complément à b-1), la représentation au complément arithmétique
ou vrai (complément à b).
Nous sommes tous familiers à la représentation en signe et valeur absolue, car c’est elle que nous utilisons tous les
jours. Elle est cependant moins bien adaptée aux opérations arithmétiques. La représentation au complément logique
et la représentation au complément arithmétique sont plus simples à implémenter dans les machines.
A cause de notre familiarité avec la notation classique signe et valeur absolue, il nous arrive des fois de rencontrer des
représentations de nombres négatifs un peu bizarre. +72,3 base 10 devrait s’écrire 072,3 et le nombre +9,25 devrait
s’écrire 09,25. Nous avons tendance à dire que +72,3 est équivalent à 72,3 et +9,25 est équivalent à 9,25.
Dans le premier cas, nous pouvons considérer que le 0 non significatif est négligé, mais dans le second cas, nous
allons considérer 9,25 comme le nombre négatif -,25).
43
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation en signe et valeur absolue (Sign and Magnitude)
Nous sommes tous familiers à cette méthodes, car c’est elle que nous utilisons tous les jours. Elle est cependant moins bien adaptée aux opérations
arithmétiques. Dans ce mode de représentation seul le signe change et le module reste constant.
A cause de notre familiarité avec la notation classique signe et valeur absolue, il nous arrive des fois de rencontrer des représentations de nombres négatifs un
peu bizarre. +72,3 base 10 devrait s’écrire 072,3 et le nombre +9,25 devrait s’écrire 09,25. Nous avons tendance à dire que +72,3 est équivalent à 72,3 et +9,25
est équivalent à 9,25. Dans le premier cas, nous pouvons considérer que le 0 non significatif est négligé, mais dans le second cas, nous allons considérer 9,25
comme le nombre négatif -,25).
Pour représenter un nombre en base B avec signe nous prenons conventionnellement 0 pour représenter le signe « + » et (B-1) pour représenter le signe « - ».
Cela nous permet d’ailleurs de garder les signes « + » et « – » pour l’ addition et la soustraction. Le MSB représente le signe et les autres bits représentent la
valeur absolue (module).
(N)B = S(dn-1 dn-2 …d1 d0 , d-1 d-2 …d-k)B
Avec 0 <= di <= (B-1)
La représentation en module et signe (Sign and Magnitude) d’un nombre binaire de n bits
-(2n-1-1) à + (2n-1-1)
Pour la représentation en module et signe, les nombres de n bits qu’on peut représenter vont
de – (2n-1-1) à + (2n-1-1) N10 N2 -N2 -N10
Sur un format de 4 bits nous pouvons représenter les nombres allant de : 0 0000 1000 0
–(24-1 -1) à +(24-1 -1), –(23 -1) à +(23 -1), -7 à +7 1 0001 1001 -1
2 0010 1010 -2
-7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 +6 +7 3 0011 1011 -3
4 0100 1100 -4
Un inconvénient majeur dans cette représentation est le 0 qui possède deux notations possibles
0000 et 1000. 5 0101 1101 -5
6 0110 1110 -6
L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à la 7 0111 1111 -7
positon du MSB et à compléter les autres par 0. Cela peut s’appliquer sur les nombres positifs
comme sur les nombres négatifs.
(N)B = Sdn-2 …d1 d0 , d-1 d-2 …d-k)B , avec 0 <= di <= (B-1)
Pour la représentation en module et signe, les nombres de n bits qu’on peut représenter vont de
– (Bn-1-1) à + (Bn-1-1)
Les nombres décimaux de 3 bits vont de -99 à +99 (999, 998, 997……………902, 901, 900, 000, 001, 002, ……..…098, 099)
Les nombres octaux de 3 bits vont de -77 à + 77 (777, 776, 775, ……….….702, 701, 700, 000, 001, 002, ..…..….076, 077)
Les nombres hexadécimaux de 3 bits vont de -FF à + FF (FFF, FFE, FFD, …………F02, F01, F00, 000, 001, 002, ……….0FE, 0FF)
L’extension d’un nombre codé sur n bits à un format n+k bits consiste à décaler le bit de signe à la positon du MSB et à compléter les
autres par 0. Cela peut s’appliquer sur les nombres positifs comme sur les nombres négatifs.
+9810 sur 3 bits s’écrit 09810 et sur 6 bits 00009810 -9810 sur 3 bits s’écrit 99810 et sur 6 bits 90009810
+768 sur 3 bits s’écrit 0768 sur sur 6 bits 0000768 -768 sur 3 bits s’écrit 7768 sur sur 6 bits 7000768
+7616 sur 3 bits s’écrit 07616 sur sur 6 bits 00007616 -7616 sur 3 bits s’écrit F7616 sur sur 6 bits F0007616
46
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
La représentation au complément restreint, de (B-1), (Diminish Radix) ou complément de 9,7,15,1
Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation complément de base moins un (B-1) comme suit :
(-N)B= (Bn)B - (N)B - (.1)kB
N =0123.4510 n=4, m=6 k=2
(-N)10 = (104)10 - (N)10 - (.1)210
(-N)10 = (10000.00)10 - (0123.45)10 - (0000.01)10 = (10000.00 - 0000.01)10 - (0123.45)10
(-N)10 = (9999.99)10 - (0123.45)10 = (9876.54)10
La négation –N d’un nombre positif N est représentée en complément de B par la formule suivante:
(-N)B = (Bn)B - (N)B
N est le nombre positif, n est le nombre de chiffre de la partie entière,
N =0123.45610 n=4, m=7
(-N)B= (104)10 - (0123.456)10
(-N)B= (10000.000)10 - (0123.456)10 = 9876.54410
(N)B (-N)B
0432.1210 9567.8810 0432.1210 + 9567.8810 = 1 0000.00
7142.118 0635.678 7142.118 + 0635.678 = 1 0000.00
0111.0102 1000.1102 0111.0102 + 1000.1102 = 1 0000.000
0A37.1116 F5C8.EF16 0A37.1116 + F5C8.EF16 = 1 0000.00 49
Le complément de 1 de 1011 nous donne 0100. Si on y ajoute 1, nous aurons son complément
de 2 qui est 0101. 0101 est l’équivalent de +5. Le nombre 1011 est alors -5 au lieu de -3.
50
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Passage de la représentation au complément B -1 à B
Nous avons étudié la représentation d’un nombre négatif en complément B (vrai) et en complément de B-1 (restreint), mais dans la
pratique, nous partons toujours du complément de B-1 qui est plus facile à obtenir pour aller au complément de B en ajoutant 1.
Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation de base comme suit :
(-Nr)B= (Bn)B - (N)B
Si un nombre N de base B est composé de m chiffres dont la partie entière fait n chiffres, le signe inclus et une partie fractionnaire de k
chiffres, nous pouvons représenter ce nombre en notation de base mois un comme suit :
(-N )B= (Bn)B - (N)B - (.1)kB
r-1 (-N )B+ (.1)kB = (Bn)B - (N)B = (-Nr)B = (-N )B+ 1
r-1 r-1
51
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
52
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Représentation en complément de 2
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
Base 2
Chiffre 0 1
Complément 1 0
Base 8
Chiffre 0 1 2 3 4 5 6 7
Complément 7 6 5 4 3 2 1 0
Base 10
Chiffre 0 1 2 3 4 5 6 7 8 9
Complément 9 8 7 6 5 4 3 2 1 0
Base 16
Chiffre 0 1 2 3 4 5 6 7 8 9 A B C D E F 55
Complément F E D C B A 9 8 7 6 5 4 3 2 1 0
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Cherchez le complément de 1 des nombres décimaux signés
58
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Convertir les nombres binaires signés représentés au complément de 2 en décimal
60
Exercices
0.10112 1.10112
0124.3415 4124.3415
934510 034510
0123.4510 9876.5410
Combien de nombres entiers non signés de 8-bit, 16-bit, 32-bit et 64-bit peut on représenter
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)
Représenter en binaire les valeurs non signés en 8 bits de 88, 0, 1, 127 et 255
88 = 0101 1000, 0 = 0000 0000, 1 = 0000 0001, 127 = 0111 1111, 255 = 1111 1111
Représenter au complément de 2 en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -128 et +127
+88 = 0101 1000, -88 = 1010 1000, -1 = 1111 1111, 0 = 0000 0000, +1 = 0000 0001, -128 = 1000 0000, +127 = 0111 1111
NB. Pour représenter les nombre négatifs, il faut partir du nombre positif, chercher le complément de 1 sans le signe, ajouter 1
pour avoir le complément de 2, mettre 1 comme MSB représentant le signe.
Représenter en signe et module en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -127, and +127
+88=0101 1000, -88=1101 1000, -1=1000 0001, 0=0000 0000 or 1000 0000, +1=0000 0001, -127=1111 1111, +127=0111 1111.
Représenter au complément de 1 en binaire les valeurs signés en 8 bits de +88, -88 , -1, 0, +1, -127 and +127
+88=0101 1000, -88 =1010 0111, -1=1111 1110, 0=0000 0000 or 1111 1111, +1=0000 0001, -127=1000 0000, +127=0111 1111
62
Corrigés
Chercher la valeur des deux codes de 16 Deux nombres entiers signés de 8 bits.
bits suivant leur représentation. Si le nombre n’est pas signé, tous les chiffres représentent le module
65
REPRÉSENTATION DES NOMBRES
OU CODAGE ANALYTIQUE
Exercices : Convertir les nombres décimaux signés en binaire
-0 = 10
-4 = 1100
-85 = 1101 0101
3,650 = 0000 1110 0100 0010
-475 = 1000 0001 1101 1011
-129,542,144 = 1000 0111 1011 1000 1010 1000 0000 0000
-33 = 1010 0001
2,321 = 0000 1001 0001 0001
7,814,344,875,180,031 = 0000 0000 0001 1011 1100 0011 0001 1010 1111 0010 0110 1111 1111 1111 1111 1111
2,020 = 0000 0111 1110 0100
-9,022,270,416,445,046,111 = 1111 1101 0011 0101 1000 1011 0010 0100 0100 0111 1011 1000 1111 1101 0101 1111
110,001,101 = 0000 0110 1000 1110 0111 1011 1100 1101
4,893 = 0001 0011 0001 1101
66
ARITHMÉTIQUE NUMÉRIQUE
L’addition binaire
La soustraction binaire
La multiplication binaire
La division binaire
Arithmétique décimale
Arithmétique octale
Arithmétique hexadécimale
67
ARITHMÉTIQUE NUMÉRIQUE
Addition binaire
L’addition binaire s’effectue exactement comme l’addition en base 10. C’est l’opération la plus simple de l’arithmétique
binaire. La règle qu’il faut retenir est la suivante :
0+0=0 sans retenue 0+1=1 sans retenue 1+0=1 sans retenue 1+1=0 avec 1 comme retenue
9710+7210=16910
Cette opération effectuée en binaire donne ce qui suit
9710 = 01100001
7210 = 01001000 11001001 1101110
0 1 1 0 0 0 0 1 + 110101 + 100010
0 1 0 0 1 0 0 0
11111110 10010000
1 0 1 0 1 0 0 1 = 16910
68
ARITHMÉTIQUE NUMÉRIQUE
= 1 0 0 0 1 1 0 0 0
Le 1 qui déborde sera additionné au résultat pour donner le résultat final
0 0 0 1 1 0 0 1 = +25 69
ARITHMÉTIQUE NUMÉRIQUE
+ 1
Ϲ2(+72) 1 0 1 1 1 0 0 0
L’opération qu’il faut faire est la suivante
+97 0 1 1 0 0 0 0 1
+
Ϲ2(+72) 1 0 1 1 1 0 0 0
70
= 1 0 0 0 1 1 0 0 1 = +25
Le 1 qui déborde ne fait pas partie de l’opération est négligé
ARITHMÉTIQUE NUMÉRIQUE
S’il n’y a pas de difficultés les colonnes 5 (0-0=0), 4(1-0=1) et 3 (1-1=0), pour la deuxième colonne (0-1), ne pouvant pas
soustraire 1 de 0, j’emprunte (borrow) la base 2 du 1 qui se trouve à droite (première colonne). Le 1 de la première colonne
devient 0 (1-1=0) et le 0 de la deuxième colonne devient 2 (la base). Il s’agira de faire l’opération suivante.
0 2 1 1 0
0 1 1 0 0
0 1 0 1 0
71
ARITHMÉTIQUE NUMÉRIQUE
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.
0 1 1 2 2
0 0 1 1 1 72
0 1 0 1 1
ARITHMÉTIQUE NUMÉRIQUE
Ϲ1(+97) 1 0 0 1 1 1 1 0
+ 1
Ϲ2(+97) 1 0 1 0 0 0 0 1
+72 0 1 0 0 1 0 0 0
+
Ϲ2(+97) 1 0 1 0 0 0 0 1
= 1 1 1 0 1 0 0 1 = Résultat intermédiaire
Nous cherchons le complément de 2 du résultat intermédiaire sans le signe (-) que nous remplaçons par le signe (+)
R intermédiaire 1 1 1 0 1 0 0 1
R intermédiaire sans le signe 0 1 1 0 1 0 0 1
Ϲ1R interméd. sans le signe 1 0 0 1 0 1 1 0
+ 1
73
Ϲ2R interméd. sans le signe 1 0 0 1 0 1 1 1 = - 25
ARITHMÉTIQUE NUMÉRIQUE
Multiplication binaire
Division binaire
La division binaire s’effectue comme la division décimale. A retenir est : 0-1 = 0 avec 1 comme retenue, 1-0=1, 1-1=0, et 0-0=0.
132/12 1 0 0 0 0 1 0 0 / 1100 On peut supprimer les zéros qui sont à droite de la dividende et du diviseur
1 0 0 0 0 1 11
(R1) (R1)
1 1
-------------
0 0 1 0
0 0 1011 1. Vous regroupez les trois premier chiffres comme 11 est supérieur à 10
---------- 2. 1 x 11 vous donne 11 que vous enlevez de 100 comme ceci :
10 0 0 -1 donne 1 et il reste 1 que vous allez ajouter au premier 1 du 11.
(R1) (R1) 1+1 donne 0, ensuite 0-0 vous donne 0 et vous renvoyez la retenue 1
1 1 110000000110 1110010
--------- 1110010
0 0 1 1 10011100 11011
1 1 1110010
10101011
--------
1110010 75
0 0 11100010
ARITHMÉTIQUE NUMÉRIQUE
L’addition décimale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+ 1+
Base 10 : 3 4 5 8
+
5 6 8 9
9 11 4
1 7
1
1=11-B(0) 4-14-B(10) 7=17-B(10)
A chaque fois que le résultat trouvé dépasse la base (B=10), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 76
ARITHMÉTIQUE NUMÉRIQUE
L’addition octale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+ 1+ 1+
Base 8 : 3 4 5 7
+ 63375 5304
5 6 3 4 + 7465 + 6647
73062 14153
1 1 1 1 3 11 1 3
1=9-B(8) 3=11-B(8) 1=9-B(8) 3=11-B(8)
A chaque fois que le résultat trouvé dépasse la base (B=8), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 77
ARITHMÉTIQUE NUMÉRIQUE
L’addition hexadécimale
Les additions décimales, octale et hexadécimale se font de la même façon que l’addition binaire.
1+ 1+
Base 16 : 3 A B C
+ 89A27 5304
5 6 3 4 + EE54 + CC3B
9887B 11F3F
9 10 F 1 0
0=16-B(16) 0=16-B(16)
A chaque fois que le résultat trouvé dépasse la base (B=16), il faut soustraire la base et retenir 1 qu’il
faut additionner à la colonne suivante. 78
ARITHMÉTIQUE NUMÉRIQUE
Colonne 3. Ne pouvant pas enlever 7 de 2, je vais emprunter 1 à la colonne 2 qui devient 3 et la colonne 3 devient la base (8)+2 = 10
Colonne 2. Ne pouvant pas enlever 4 de 3, je vais emprunter 1 à la colonne 1 qui devient 4 et la colonne 2 devient la base (8)+3 =11
4 11 10
3 4 7 52130 145126
1 7 3
- 6643 - 75543
43265 47363
80
ARITHMÉTIQUE NUMÉRIQUE
Colonne 3. Ne pouvant pas enlever 6 de 0, je vais emprunter 1 à la colonne 2 qui devient 6 et la colonne 3 devient la base (8)+0 = 8
7 6 8
4 5 6
3 1 2
81
ARITHMÉTIQUE NUMÉRIQUE
090F0
+ FC544
= 1 0 5 6 3 4 = 5634 Le 1 est un débordement qu’il faut ignorer et le 0
83
représente le signe (-)
ARITHMÉTIQUE NUMÉRIQUE
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
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
85
ARITHMÉTIQUE NUMÉRIQUE
complément de 15, ce qui nous donne F6F0F+1 = F6F10 . Il ne nous reste qu’à faire N + Ϲh(M)
03ABC
+ F6F10
= FA9CC 0A9CC qui donne F5633
on cherche le complément de 15 de ce résultat sans le signe
Ensuite le complément de 16 pour avoir le résultat définitif F5633 +1 = F5634 = - 5634
86
ARITHMÉTIQUE NUMÉRIQUE
La multiplication octale
16
X 2
2x1=2 (plus la retenue 1) = 3 34 2x6 (12-8(base) = 4) on retient (1)
16
X 3
3x1=3 (plus la retenue 2) = 5 52 2) on retient (2)
3x6 (18-8-8 =
7506 4327
16 x 243 x 651
X 14 26722 4327
70 36430 26063
16 17214 32412
250 2334622 87
3526357
4x1=4 (plus la retenue 3) = 7 4x6 (24-8-8-8 = 0) on retient (3)
ARITHMÉTIQUE NUMÉRIQUE
La multiplication hexadécimale
1B
X 8
8x1=8 (plus la retenue 5) = D D8 8x11 = (88-(5*16)= 8) on retient (5)
A928 6340
AB x 7D3 x B51
X B4 1FB78 6340
783C
52B83F8 4632740
La division octale
La division hexadécimale
Elle se fait comme toutes les autres divisions. La maitrise de
l’addition, de la soustraction et de la multiplication hexadécimale
24328 2B
sont des prérequis qu’il faut avoir.
90
ARITHMÉTIQUE NUMÉRIQUE
Exercices
Exercices
Conversion d'un nombre base 10 en base 2 Conversion d'un nombre base 10 en base 8
84 2 110 8
0 42 2 6 13 8
0 21 2 5 1 8
Faites un tableau Excel qui permet de convertir Reste
LSB Reste 1 10 2
Reste
LSB Reste 1 0
MSB
4, 8 et 16 par la méthode de la division Reste 0 1 2
Reste 1 0
successive Reste
MSB
Conversion d'un nombre base 10 en base 4 Conversion d'un nombre base 10 en base 16
105 4 827 16
1 26 4 11 51 16
Reste 2 6 4 Reste 3 3 16
LSB Reste 2 1 4 LSB Reste 3 0
Reste 1 0 Reste
Reste MSB
MSB
92
105 base 10 = 1 2 2 1 827 base 10 = 3 3 B
ARITHMÉTIQUE NUMÉRIQUE
Exercices
Soustraction binaire de nombres de 4 bits 11001011 00101000 - 10011110 01011011 = 101100 11001101
1011 - 1001 = 0010 10111100 10111000 - 10011000 11110011 = 100011 11000101
1100 - 0110 = 0110
1010 - 0011 = 0111
1101 - 1011 = 0010 Addition binaire
1001 - 0111 = 0010
1100 - 1001 = 0011 101 + 11 = 1000
111 + 111 =1110
Soustraction binaire de nombres de 8 bits 1010 + 1010 =10100
11101 + 1010 =100111
11001010 - 10011010 = 00110000 11111 + 11111 =111110
10011100 - 01111001 = 00100011
11001011 - 10000011 = 01001000
11100001 - 10011101 = 01000100
10000001 - 01100110 = 00011011
10010011 - 10000111 = 00001100
94
ARITHMÉTIQUE NUMÉRIQUE
95
ARITHMÉTIQUE NUMÉRIQUE
7327 + 6302 = 15631 5343 - 2401 = 2742 640630 /67 =7450 2577 *12 = 33366
1321 + 5043 = 6364 5353 - 4074 = 1257 133565 /17 =6073 7356 *13 = 122072
3116 + 1741 = 5057 14510 - 4731 = 7557 152066 /56 =2235 5672 *6 = 43134
2672 + 6056 = 10750 7145 - 1361 = 5564 100670 /16 =4504 1247 *72 = 114726
1157 + 2557 = 3736 4715 - 1237 = 3456 155240 /41 =3240 7416 *4 = 36070
1170 + 5217 = 6407 11654 - 6303 = 3351 260362 /45 =4612 6701 *54 = 456454
7406 + 4417 = 14025 6064 - 1915 = 5047 211276 /26 =6175 4455 *12 = 55702
4175 + 5320 = 11515 17337 - 7526 = 7611 25200 /21 =1200 2051 *41 = 104511
4040 + 1154 = 5214 14307 - 5261 = 7026 164420 /60 =2333 4461 *75 = 430255
5166 + 7072 = 14260 7151 - 1304 = 5645 45320 /11 =4120 7046 *22 = 177254
7615 + 7647 = 17464 3006 - 1263 = 1523 500324 /77 =5054 6500 *74 = 615400
7076 + 3734 = 13032 4102 - 2643 = 1237 404266 /46 =6532 5505 *63 = 437277
4124 + 7457 = 13603 11453 - 2122 = 7331 105620 /35 =2320 3363 *61 = 252203
6412 + 6651 = 15263 10057 - 4530 = 3327 26056 /15 =1546 3304 *5 = 20274
6607 + 1152 = 7761 12070 - 6142 = 3726 514654 /54 =7441 2416 *14 = 36250
7614 + 4173 = 14007 12761 - 6431 = 4330 22364 /53 =334 5342 *37 = 250536
7773 + 7601 = 17574 11417 - 7007 = 2410 424224 /54 =6217 540 *24 = 15600
6501 + 6477 = 15200 7323 - 2111 = 5212 36723 /7 =4325 1033 *21 = 21713
7410 + 3040 = 12450 7156 - 4315 = 2641 213177 /61 =2657 6276 *53 = 421752
6773 + 4620 = 13613 12701 - 2733 = 7746 375467 /51 =6137 7503 *44 = 422554
96
ARITHMÉTIQUE NUMÉRIQUE
Exercices
98
ARITHMÉTIQUE NUMÉRIQUE
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.
Si nous prenons le nombre 13E8, 13 est la mantisse, 8 est l’exposant et 10 est la base, +1 est le signe.
Nous allons donc avoir +13x108 = 1 300 000 000
Pour représenter un nombre en virgule flottante, il faut alors utiliser un exposant et une mantisse signées
124, 23 = 0,124 x 10+3 0,0000687 = +0,678 x10-4 99
ARITHMÉTIQUE NUMÉRIQUE
Représentation des nombre à virgules flottantes Représentation des nombre à virgules flottantes
Si nous voulons représenter un nombre binaire sur 8 -13,9 à représenter sur 8 bits
bits, nous avons le MSB qui est le bit de signe et les Le nombre est négatif le bit de signe est 1
autres 7 bits représentent le module ou la valeur 13 en binaire vaut 1101
absolue. Le nombre positif le plus grand sera 01111111 = 0,9 = 0.11100
+127 et le nombre positif le plus petit sera 00000000 = 0. -13,9 donne 1101.11100
Le nombre négatif le plus grand sera 10000000 et le déplacer la virgule vers la gauche de 3 places donne
nombre négatif le plus petit sera 11111111=-127 (1.10111100) 23
(1.10111100) 2(011)
A supposer qu’on veuille stocker 9375, cela devient
impossible. 3 vaut 11 et comme 3 bits sont réservés à l’exposant, nous
complétons à gauche par un zéro non significatif (011)
Pour contourner cette difficulté nous allons utiliser la -13,9 représenté sur 8 bit selon notre hypothèse donne
notation scientifique du nombre qui comprend le signe,
la mantisse et l’exposant.
1 0 011 101
Le 1 à gauche du point est connu , donc pas représenté.
Nous allons hypothétiquement utiliser le MSB comme bit
Ne pouvant pas représenter tous le nombres nous nous limitons à un
de signe, le deuxième bit vers la droite comme signe de
l’exposant, les trois bits qui suivent comme l’exposant et
nombre de 3 chiffres, ce qui va impliquer un imprécision et une 100
erreur.
les trois deniers bits pour la mantisse.
ARITHMÉTIQUE NUMÉRIQUE
Nous savons que sur 4 bits le nombre le plus petit que Ainsi 2-7 ajusté devient 2 (-7+7),= 2(0000)
nous pouvons stocker est 00002=010 et le nombre le plus 23 ajusté devient 2(3+7)= 210 = 2(1010)
grand est 11112=1510 28 ajusté devient 2(8+7)= 215 = 2(1111)
Nous prenons la moyenne entière de 0+15 qui nous
donne 7. -13,9 = - (1.101) x 23 , avec 1 comme bit de signe, 3 comme
Nous allons sur les 4 bits pouvoir représenter les 16 exposant non-ajusté et 101 les 3 bits de la mantisse.
exposants qui vont de -7 à 8 par les 4 bits allant de 0000 Nous allons ajuster l’exposant en ajoutant 7, ce qui nous
à 1111 donne 3+7 = 1010 = 10102
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 102
-13,9 sur 8 bits devient alors 1 1010 101
ARITHMÉTIQUE NUMÉRIQUE
1,23 x 103 peut s’écrire de plusieurs façon comme celles-ci : 1,23 x 103 , 12,3 x 102 , 123 x 101 , 0,123 x 104
Mais seul la dernière écriture est normalisée parce que la partie entière est 0 et d1 est égale à 1 donc supérieur à 0, d2 et d3 qui sont
respectivement 2 et 3 sont aussi supérieurs ou égale à 0.
La précision
Le nombre peut être représenté de deux manières:
La simple précision (32 bits), et la double précision (64 bits)
103
ARITHMÉTIQUE NUMÉRIQUE
La représentation d’un nombre binaire en virgule flottante obéit aux règles suivantes :
La précision
Le nombre peut être représenté de plusieurs manières:
104
ARITHMÉTIQUE NUMÉRIQUE
Le standard IEEE 754 est une norme sur l'arithmétique à La simple précision (32 bits : 1 bit de signe, 8 bits d'exposant (−126 à 127), 24
virgule flottante mise au point par le Institute of Electrical bits de mantisse, dont un bit 1 implicite) ;
and Electronics Engineers. Elle est la norme la plus
employée actuellement pour le calcul des nombres à La simple précision étendue (≥ 43 bits, obsolète)
virgule flottante avec les CPU et les FPU. La norme définit
La double précision (64 bits : 1 bit de signe, 11 bits d'exposant (−1022 à 1023), 53
les formats de représentation des nombres à virgule bits de mantisse, dont un bit 1 implicite) ;
flottante (signe, mantisse, exposant, nombres
dénormalisés) et valeurs spéciales (infinis et NaN), en La double précision étendue (≥ 79 bits, souvent mis en œuvre avec 80 bits : 1 bit de
même temps qu’un ensemble d’opérations sur les nombres signe, 15 bits d'exposant (−16382 à 16383), 64 bits de mantisse, sans bit 1 implicite).
flottants. Il décrit aussi cinq modes d'arrondi et cinq
exceptions (comprenant les conditions dans lesquelles une S 8 bits pour l'exposant e 23 bits pour la mantisse, la partie fractionnaire
exception se produit, et ce qui se passe dans ce cas). S e m
Représentation des nombre à virgules flottantes Représentation des nombre à virgules flottantes
Comment représenter un nombre en virgule flottante sur 32 bits Pour la simple précision, 2 (8-1) – 1 = 127 est le nombre qu’il faut
suivant la norme IEEE 754 ajouter à l’exposant non encore ajusté pour avoir l’exposant réel.
-5,7510 à représenter au format IEEE 754 Pour la double précision, 2 (11-1) – 1 = 1023 est le nombre qu’il faut
ajouter à l’exposant non encore ajusté pour avoir l’exposant réel.
1. Nous commençons par convertir la valeur absolue 5,75 en
binaire qui donne 101,11 Exposant réel = 217+2 = 129 que nous allons convertir en binaire
(1000 0001) sur 8 bits.
2. Ensuite nous déplaçons la virgule de deux places vers la
gauche pour avoir (1,0111) x 22, p=2 4. Il ne nous reste qu’à écrire les 32 chiffres en commençant par 1
qui est le bit de signe, ensuite l’exposant, 129 convertit en binaire,
A ce stade, -5,75 se présente comme suit : puis la mantisse normalisée 1.0111 000 0000 0000 0000 0000 sur
• 1 pour le bit de signe car il est négatif, 23 positions. A noter que le 1 implicite à gauche est à enlever.
• 2 comme exposant non encore ajusté,
• 1,0111 pour la mantisse non encore normalisée. 1-1000 0001-011 1000 0000 0000 0000 0000
3. On cherche l’exposant réel (ajusté) comme suit : Nous allons regrouper ce nombre de 32 bits pour le convertir en
Exposant réel = exposant non ajusté + 2 (8-1) - 1 hexadécimal 106
Exposant réel = 2 + 2 (8-1) – 1 = 2 + 127 1100 0000 1011 1000 0000 0000 0000 000
C 0 B 8 0 0 0 0
ARITHMÉTIQUE NUMÉRIQUE
2. Nous allons ensuite faire la notation scientifique de 263.3 converti en binaire en déplaçant le point d’un certain
nombre de positions qui va donner l’exposant. 100000111.01001100110011
Si nous déplaçons le point de 8 positions juste avant le 1, nous aurons
(1.00000111 01001100110011) x 28
3. Nous allons écrire le nombre suivant la norme IEEE 754 qui dit que le premier bit est le bit de signe. Comme 263.3
est positif, le bit de signe est 0. Les huit bits qui suivent représente l’exposant 8. Dans le format IEEE 754 si l’exposant
est positif ont ajoute 127, si l’exposant est négatif on le soustrait de 127. Notre exposant sera alors 127+8 = 135.
Les 23 places restantes abriterons la mantisse qui représente les chiffres significatifs ou significande ou la partie
fractionnaire. Étant donné qu’elle est cyclique, nous allons prendre les 23 premiers chiffres)
Nous aurons ainsi : signe(0) exposant (10000111) mantisse (00000111 010011001100110) 107
263.3 = 0100 0011 1000 0011 1010 0110 0110 0110 = 4383A666
ARITHMÉTIQUE NUMÉRIQUE
5. Il ne nous reste qu’à écrire le nombre de 32 bits comme ceci et le convertir ensuite en héxadécimal
1 0111 1001 000 0010 0000 0000 0000 0000 = 1011 1100 1000 0010 0000 0000 0000 0000 = BC820000 108
ARITHMÉTIQUE NUMÉRIQUE
500.32 = 0 - 100 0000 0111 - 1111 0100 0101 0001 1110 1011 1000 0101 0001 1110 1011 1000 0101
9.751 = 0 - 100 0000 0010 - 0011 1000 0000 1000 0011 0001 0010 0110 1110 1001 0111 1000 1101
10 000 000 000 000 000 = 0 - 100 0011 0100 - 0001 1100 0011 0111 1001 0011 0111 1110 0000 1000 0000 0000 0000
-10.75 = 1 - 100 0000 0010 - 0101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
14.79 = 0 - 100 0000 0010 - 1101 1001 0100 0111 1010 1110 0001 0100 0111 1010 1110 0001 0100
18 266 226 688 = 0 - 100 0010 0001 - 0001 0000 0011 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
6 670 = 0 - 100 0000 1011 - 1010 0000 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
206.02 = 0 - 100 0000 0110 - 1001 1100 0000 1010 0011 1101 0111 0000 1010 0011 1101 0111 0000
125.125 = 0 - 100 0000 0101 - 1111 0100 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
8 = 0 - 100 0000 0010 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
28.75 = 0 - 100 0000 0011 - 1100 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
-10.75 = 1 - 100 0000 0010 - 0101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
37.5 = 0 - 100 0000 0100 - 0010 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
111
ARITHMÉTIQUE NUMÉRIQUE
Représentation des nombre à virgules flottantes spéciales 3. Si les 8 bits de l’exposant ajusté contiennent tous des 0
(00000000) et que et la mantisse est différente de 0, nous
zéro, des infinis et nombres dénormalisés de la norme IEEE 754 sommes dans le cas de la représentation dénormalisées
permettent de représenter des nombres plus petits que ceux
En dehors des format normalisés, la norme IEEE permet de admis par le format IEEE normalisé. Dans ce cas l’exposant est
représenter le 0, le valeurs infinis et celles qui sont -127 et la mantisse est sous la forme ±0,M.2 ±c . 1.M x 2-127
dénormalisées.
4. Si les 8 bits de l’exposant ajusté contiennent tous des 1
(11111111) et que et la mantisse est différente de 0, nous avons
1. Si les 8 bits de l’exposant ajusté contiennent tous des 0
des erreurs qui peuvent être représentées par des NaNs (Not a
(00000000) et que les 23 bits de la mantisse ne contiennent que
Number). 1.M x 2128 . Les NaNs peuvent être du genre 0/0 ou −1
des 0 (00000000000000000000000), la mantisse est égale à
1.0 et l’exposant est égale à 0-127, ce qui donne -127. Format Valeurs représentées
1.0 x 2-127 = -0 ou +0 suivant que le bit des signe est 1 ou 0.
Normalisé: -126 ≤ c ≤ +127 2-126 à 2128
2. Si les 8 bits de l’exposant ajusté contiennent tous des 1 c = -127, M = 0, S = + ou - + 0 ou - 0
(11111111) et que les 23 bits de la mantisse ne contiennent que c = +128, M = 0, S = + ou - + ∞ ou - ∞
des 0 (00000000000000000000000), la mantisse est égale à 0
c = -127, M ≠ 0, S = + ou - dénormalisé
et l’exposant est égale à 255-127, ce qui donne 128.
1.0 x 2128 = +∞ ou - ∞ suivant que le bit des signe est 1 ou 0 c = +128, M ≠ 0, S = + ou - NaNs
112
ARITHMÉTIQUE NUMÉRIQUE
1. Le nombre que nous convertir est positif car commençant par 0 qui le signe.
Les 8 chiffres qui suivent représente l’exposant 100 0011 0 = 134. Étant donné qu’il est supérieur à 127, il est positif.
2. Nous allons chercher l’exposant réel en soustrayant 127 de 134, ce qui donne 7
3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23
1 0 1 0 1 0 0 0000 0000 0000 00 0 0
2-1 2-2 2-3 2-4 2-5 2-22 2-23
0,5 0,25 0,125 0,0625 0,03125
0,5 + 0 + 0,125 + 0 + 0,03125 = 0,65625
113
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,65625)x 27= 212
ARITHMÉTIQUE NUMÉRIQUE
1. Le nombre que nous convertir est négatif car commençant par 1 qui est le signe.
Les 8 chiffres qui suivent représente l’exposant 000 1000 1= 17. Étant donné qu’il est inferieur à 127, il est négatif.
2. Nous allons chercher l’exposant réel en soustrayant 127 de 17, ce qui donne -110
3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23
0 0 0 1 0 0 0 1 000 0000 0000 0000
2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 ………2-22 2-23
0,5 0,25 0,125 0,0625 0,03125
0 + 0 + 0 + 0,0625 + 0 + 0 + 0 + 0,00390625 = 0,06640625
114
(-1)S x (1+m) x 2e = (-1)0x(1+ 0,06640625)x 2-110= 1,06640625 x 2-110
ARITHMÉTIQUE NUMÉRIQUE
0 - 100 0001 1000 - 0111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
1. Le nombre que nous convertir est positif car commençant par 0 qui est le signe.
Les 11 chiffres qui suivent représentent l’exposant ajusté 100 0001 1000 = 1048. Étant donné qu’il est supérieur à
1023, le nombre est supérieur à 0.
2. Nous allons chercher l’exposant réel en soustrayant 1023 de l’exposant ajusté, ce qui nous donne 1048 -1023 = 25
3. Pour avoir la mantisse, nous allons chercher son équivalent décimal en les multipliant par les puissances négatives
de 2, commençant par 2-1, 2-2, 2-3…., 2-22, 2-23
Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 32/754 suivants
1 - 1000 1001 - 000 0110 0010 1100 0100 0000 = -1 073.382 812 5
0 - 0111 1000 - 111 1111 1001 0111 0010 0000 = 0.015 599 995 851 516 723 632 812 5
1 - 1000 0010 - 010 1001 0000 0000 0000 0000 = -10.562 5
1 - 1100 1011 - 100 0010 0001 1001 0101 0101 = -114 575 798 896 755 891 765 248
0 - 1000 0011 - 001 1110 0000 0000 0000 0000 = 19.75
1 - 1000 0101 - 111 0111 1100 0000 0000 0000 = -123.875
0 - 0000 0000 - 100 0000 0001 1110 1100 0011 = 0
1 - 0000 0111 - 010 0000 0000 0000 0000 0000 = -0.000 000 000 000 000 000 000 000 000 000 000 000 93
0 - 1000 1100 - 110 1101 1011 1100 0000 0000 = 15 215
1 - 1000 0011 - 110 0100 0000 0000 0000 0000 = -28.5
0 - 1111 1101 - 001 0000 0000 0000 0000 0000 = 95 704 415 696 513 942 849 074 108 340 184 809 472
0 - 1000 0011 - 000 1000 0000 0000 0000 0000 = 17
0 - 1000 0010 - 100 0001 1001 1001 1001 1001 = 12.099 999 427 795 410 156 25
116
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 32/754 dénormalisés suivants
Représentation de O
0 - 0000 0000 - 000 0000 0000 0000 0000 0000 = +0
1 - 0000 0000 - 000 0000 0000 0000 0000 0000 = - 0
Représentation de +∞ et - ∞
0 - 1111 1111 - 000 0000 0000 0000 0000 0000 = + ∞
1 - 1111 1111 - 000 0000 0000 0000 0000 0000 = - ∞
Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 64/754 suivants
0 - 100 0000 0100 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 48
0 - 100 0000 0101 - 0011 1001 1100 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 78.451 171 875
1 - 100 0011 0001 - 0111 0001 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 624 528 430 039 040
0 - 100 0000 0100 - 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 62
0 - 100 0001 1000 - 0111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 48 234 496
0 - 100 0000 0000 - 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.5
0 - 100 0000 0000 - 1111 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.937 5
1 - 100 0001 0010 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -524 288
1 - 100 0000 1010 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -3 072
0 - 100 0010 1100 - 1101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 63 771 674 411 008
1 - 011 1111 1111 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1
0 - 100 0100 0000 - 0111 1011 0010 1111 1001 1111 0000 1001 0001 1111 0110 1010 0111 = 54 646 464 651 621 359 616
0 - 100 0000 0000 - 1010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3.25
0 - 100 0000 0001 - 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 5
0 - 000 0000 0001 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 0
0 - 100 0000 0000 - 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 3
1 - 011 1111 1000 - 1110 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -0.014 709 472 656 25
0 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN 118
1 - 100 0000 1001 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 440
0 - 100 0011 0011 - 0101 1111 0111 0001 0001 1110 1011 1000 0101 1001 1110 1011 1001 = 6 182 630 848 831 161
ARITHMÉTIQUE NUMÉRIQUE
Exercices : Donnez l’équivalent décimale des nombres à virgules flottantes 64/754 suivants
0 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN
1 - 100 0000 1001 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = -1 440
0 - 100 0011 0011 - 0101 1111 0111 0001 0001 1110 1011 1000 0101 1001 1110 1011 1001 = 6 182 630 848 831 161
1 - 111 1111 1111 - 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 = Q NaN
1 - 111 1111 1111 - 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = S NaN
1 - 111 1111 1111 - 1100 0011 0001 1001 1001 1000 0000 0110 0100 0000 0000 0000 0000 = Q NaN
1 - 100 0011 1000 - 1000 0110 1100 1000 0111 1101 0111 1111 1000 0000 0011 1110 0000 = -219 991 364 505 467 904
0 - 100 0000 0011 - 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 28
0 - 100 0000 1010 - 0110 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 2 880
0 - 100 0011 1110 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 9 223 372 036 854 775 808
0 - 000 0000 0000 - 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 0000 0000 = 0
1 - 100 0011 1111 - 1000 0111 0101 1100 1001 0110 0000 0000 0000 0000 0000 0000 0000 = -28 200 579 893 431 369 728
1 - 100 0011 0000 - 1000 0011 1110 0110 1010 0011 1111 1100 0000 0101 0000 1010 0010 = -853 003 187 259 924.25
0 - 111 1111 1111 - 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 0
0 - 100 0001 0001 - 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 294 912
1 - 100 0010 0011 - 1010 0000 0010 0000 0000 1010 1111 1100 1111 0000 0000 0000 0000 = -111 702 749 135
0 - 100 0000 0000 - 0101 1011 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 2.712 890 625
0 - 100 0000 0011 - 1101 1111 1111 1111 1111 1100 0000 0000 0000 0000 0000 0000 0000 = 119
29.999 996 185 302 734 375
0 - 100 0000 0010 - 0110 1101 1011 0110 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 11.428 466 796 875
0 - 100 0000 0011 - 0110 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 = 22.75
ARITHMÉTIQUE NUMÉRIQUE
Addition des nombres à virgules flottantes 1. Cas ou les exposants sont différents
Nous allons commencer à faire quelques rappels avec la base 1.2232 E+3
10. Si nous devons additionner deux nombres en notation
scientifique. Nous devons nous arranger pour que les exposants
+ 4.211 E+5
soient les mêmes avant de pouvoir additionner les mantisses ou
signifiants. Si les exposants sont différents nous devons les Nous allons convertir le nombre 1.2232 E+3 qui a l’exposant le
égaliser avant de procéder à l’addition. Pour cela nous partons de plus petit pour lui donner un exposant de type E+5 en déplaçant
l’exposant le plus petit pour atteindre l’exposant le plus grand. la virgule vers la gauche de 5-3 = 2 positions.
120
ARITHMÉTIQUE NUMÉRIQUE
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
1. Égaliser les exposants en alignant l’exposant le plus petit sur l’exposant le plus grand. Ceci peut se faire par le
déplacement de la virgule vers la gauche.
2. Après addition, normaliser le résultat en s’assurant que la partie entière devienne 0 et que d2 soit supérieur à 0
1.1100 x 24 + 1.100 x 22 . Nous allons aligner le terme qui l’exposant le plus petit, 1.1000x 22 devient alors 0.0110 24
1 . 1 1 0 0 x 24
0 . 0 1 1 0 x 24
10. 0 0 1 0 x 24 121
On procède ensuite à la normalisation qui nous donne 0.100010 x 2 6
ARITHMÉTIQUE NUMÉRIQUE
a+b = 1. 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 x 2216
Ignoré
Nous allons écrire a+b sous 32 bits en tenant compte du nouveau exposant qui est 216 (1101 1000)
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
a+b =
1
0
2
1
3
1
4
0
5
1
6
0
7
1
8
1
9
1
10 11 12
1 1 1
13 14 15 16
0 1 0 1
17 18 19 20
1 1 0 1
21 22 23 24
1 0 1 0
25 26 27 28
0 0 1 1
29 30 31 32
1 1 1 1
123
ARITHMÉTIQUE NUMÉRIQUE
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
-1
y = 0.6 = 0.1001100110011001100110011 1.001100110011001100110011 x 2
Le signe de 0.6 est 0
L'exposant biaisé est -1+127 = 126 = 01111110
y+x Les deux nombres y et x sont positifs et n'ont pas le même exposant
Pour additionner ces deux nombres nous allons égaliser les exposants
xe-ye ye
x + y = (x s x 2 + ys) x 2 , avec xe<=ye
y 0. 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 x 2-1
x 1. 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 x 2-1
-1
y+x 1. 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 x 2
S
1 2
Exposant (8 bits)
3 4 5 6 7 8 9 10 11 12 13 14 15 16
23 bits significatifs
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
126
0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0
ARITHMÉTIQUE NUMÉRIQUE
8
500.25 = 111110100.01 1.1111010001 x 2
Le signe de 500.25 est 0
L'exposant biaisé est 8+127 = 135 = 10000111
6
1 0. 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 x2
7
1. 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 x2
-3
b = '0.14453125 = 0.00100101 1.00101 x 2
Le signe de 500.25 est 0
L'exposant biaisé est -3+127 = 124 = 10000111
6-(-3) 9
x 1. 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x2 = 2
128
0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
= 63210
ARITHMÉTIQUE NUMÉRIQUE
L'erreur d'arrondi étant inhérente au calcul en virgule flottante, il est important de pouvoir la mesurer. Ces erreurs
peuvent être de plusieurs ordres comme les arrondis, des débordements, des nombres non normalisables
(dénormalisé), des non-nombre, des nombres qui tendent vers l’infini,
Il y a plusieurs type de représentations de nombre en virgule flottante, mais les plus connues et les plus utilisées utilisent
des bases paires comme 10, 8, 2, et 16 et une précision p.
Souvent nous travaillons entre les bases 10 et 2. C’est le nombre 0.1 qui pose souvent des problème car s’il s’écrit 0.1
en base décimal, en base binaire sa représentation est cyclique et s’écrit 1.10011001100110011001101 × 2-4
Ces erreurs sont du au fait que cette représentation stock un nombre réel qui des fois peut avoir une infinité de chiffres
dans un format fini de 32 bits en simple précision, de 64 bits en double précision ou de 80 bits en long double précision.
Des fois nous rencontrons des nombres dont le significande ne peut pas être contenu par les 23 position allouées, des
fois nous avons des nombres cycliques ou des nombres irrationnels. 129
ARITHMÉTIQUE NUMÉRIQUE
Ces erreurs font aussi que les opérations effectuées sur ces nombres ne sont pas souvent associatives et
distributives.
Si nous additions un petit nombre à un grand nombre pour ensuite soustraire le grand nombre, nous nous rendons
compte que le grand nombre dans la représentation absorbe le petit nombre et reste égale à lui même.
(3.14+1E10) - 1E10 = 3.14 + (1E10-1E10).
L’expréssion à gauche va donner 0, car (3.14+1E10) demeure 1E10, 3.14 étant négligeable devant lui.
L’expréssion de droit devient 3.14
Pour la distributivité
1E20 x (1E20 - 1E20) = (1E20 x 1E20) - (1E20 x 1E20)
L’expression de gauche va nous donner 0 et l’expression de droite va nous donner l’infini – l’infini qui reste infini
130
ARITHMÉTIQUE NUMÉRIQUE