Uploaded by Abderrahim Medjber

Chapitre 1 (SecB)

advertisement
CHAPITRE 1
CODIFICATION ET REPRESENTATION DES NOMBRES
INTRODUCTION :
La codification consiste à établir une correspondance entre la représentation externe de
l'information dont nous sommes utilisateurs et sa représentation interne dans la machine,
qui est une suite de bits (suite de 0 et 1).
Le système de numération décimale (ou système décimal) est familier à chacun de nous, il
revêt de l’importance en raison de son utilisation universelle pour représenter les grandeurs
du monde courant. De ce fait, il faudra parfois convertir des valeurs décimales en valeurs
binaires avant de pouvoir les traiter dans un circuit numérique. Une même information peut
se coder de plusieurs façons en fonction de son utilisation, par exemple la forme d’un
nombre change selon qu’il entre dans un bloc de calcul, qu’il apparaît sur un circuit
d’affichage lumineux, sur un écran de visualisation, sur une imprimante etc…
Les nombres binaires (de base 2) sont utilisés de manière extensive dans les circuits
numériques, de même que les nombres des systèmes octal (base 8) et hexadécimal (base
16).
I.
Définition
Un Système de numération : C’est un ensemble de symboles assemblés selon des règles
précises, permettent d’écrire de lire et de nommer des nombres, exemple : dans le
système décimal existent 10 symboles qui sont : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Une base : elle correspond au nombre de symboles utilisés dans un système de
numération, où chaque chiffre a une valeur de position.
II.
Représentation des nombres entiers
Soit NB un entier naturel non nul quelconque et B un entier naturel strictement
supérieur à 1, on admet que l’on peut décomposer le nombre NB de façon unique :
𝑁 =
𝑎 𝐵 = 𝑎 .𝐵 + 𝑎 .𝐵 + 𝑎 .𝐵 + ⋯………𝑎
.𝐵
Où les a0, a1,………………. an-1 sont strictement inférieurs à B et an-1 est non nul.
Cette décomposition est appelée décomposition du nombre NB dans la base B.
Dans le système décimal B=10 les symboles sont : 0, 1, 2, 3 ,4, 5, 6, 7, 8, 9.
Mme F.DJIDEL
Page 1
𝑁 =
𝑎 10
Exemple : (745)10 = 5+40+700 = 5.100+ 4.101+7.102
L’écriture (745) est appelée forme implicite alors que l’écriture 5.100+ 4.101+7.102 s’appelle
forme explicite ou forme polynomiale.





III.
Chaque chiffre du nombre est à multiplier par une puissance de 10 c’est ce que l’on
nomme le poids du chiffre.
Cette manière d’écrire les nombres est appelée système de numération de position :
(12435)10 =1.104 +2. 103+4. 102 +3. 101 +5. 100
Le chiffre 1 est appelé le poids fort, le chiffre 5 est appelé le poids faible.
Dans le système octal B=8, les symboles sont : 0, 1, 2, 3, 4, 5, 6, 7.
Exemple : (745)8 = 7.82 + 4.81 +5.80= 7.64+4.8+5=(485)10
Dans le système hexadécimal B=16 , les symboles sont : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
B, C, D, E, F.
Exemple : (5AF)16= 5.162 + A.161 +F.160= 5.256+10.16+15=(1455)10
Dans le système binaire B=2 , les symboles sont : 0, 1.
Exemple : (10110)2 = 1.24 + 0.23 +1.22+1.21+0.20 = 16+4+2=(22)10
CONVERSIONS
Il existe trois types de conversion :
 Conversion du système décimal à un autre système, cette opération s’appelle
le codage.
 Conversion d’un système autre que le décimal à un autre système décimal,
cette opération s’appelle le décodage.
 Conversion entre deux systèmes non décimaux, cette opération s’appelle le
transcodage.
III.1 Codage d’un nombre
Le codage d’un nombre décimal est sa conversion du système décimal vers un système de
base B, tel que B≠10.
a. Cas de la partie entière (nombre entier) :
Soit N un nombre représenté en base 10 tel que N = (58)10
Mme F.DJIDEL
Page 2
(58)10 =(111010)2
Représentation octale : (58)10 =(72)8
Représentation hexadécimale : (58)10 = (3A)16
L’opération de codage est obtenue par des divisions successives d’un nombre décimal
par la base B du système jusqu’au moment où le quotient devient nul, le premier reste
est le poids faible, le dernier reste est le poids fort.
b. Cas de la partie fractionnaire:
Le processus du codage de la partie fractionnaire d’un nombre est de faire des
multiplications successives de la partie fractionnaire par la base et ne garder que la
partie entière, jusqu’à l’obtention d’une partie entière seulement.
Exemple :
 Convertir (58.375)10 en base 2
0.375x2=0.75 0.75x2=1.5
0.5x2=1.0
(58.375)10 = (111010.011)2
 Convertir (0.47)10 =( ?)2
Mme F.DJIDEL
Page 3
0.47x2=0.94 0.94x2= 1.88 0.88x2= 1.76 0.76x2= 1.52 0.52x2=1.04
0.04x2=0.08…………..
D’où (0.47)10 =( 0.011110……)2
Remarque : On peut remarquer qu’un nombre fini dans une base peut conduire à une
suite infinie dans une autre base.
c. Cas d’un nombre réel
Un nombre réel est constitué de deux parties, la partie entière et la partie fractionnaire.
La partie entière est codée en effectuant des divisions successives par la base B et la
partie fractionnaire est codée en effectuant des multiplications successives par la base B.
Exemple :
(25.75)10 =( 11001.11)2
(250.8125)10 =( 372.64)8
Le nombre de bits après la virgule détermine la précision.
III.2 Décodage d’un nombre
Le décodage est l’opération inverse du codage, cette opération est assez simple puisqu’il
suffit de faire le développement en polynôme (forme explicite) de ce nombre dans la base B
et de faire la somme par la suite.
Exemple :
(11011)2 = 1x24 +1x23 + 0x22 +1x21 +1x20=16 +8 + 0+ 2 + 1 = (27)10
(372)8= 3x82 +7x81 + 2x80= 3x64 + 56 + 2 = (250)10
(2AF)16= 2x162 +Ax161 + Fx160= 2x256 + 10x16 + 15=(687)10
(43.2)5= 4x51 +3x50+ 2x5-1 = (23.4)10
III.3 Transcodage d’un nombre
Le transcodage d’un nombre est le passage entre deux systèmes non décimaux.
B1 ≠ 10
B2 ≠10, il n’existe pas de méthode pour passer directement de B1 à B2 s’il
n’existe pas de relation entre ces deux bases. L’idée est de passer par le système décimal.
B1
Transcodage
Décodage
B2
Codage
B =10
Mme F.DJIDEL
Page 4
Exemple :
(1110)2 =1x23 + 1x22 +1x21 +0x20=8 + 4+ 2 = (14)10
(14)10 = (16)8
Pour certaines bases (2 vers 8, 2 vers 16) le transcodage peut se faire sans passer par le
décimal.
-Conversion binaire octale (8=23):
Exprimons le nombre (47)10 dans le système octal et dans le système binaire.
47 8
7
47 2
5
8
5
0
1 23
1
2
11
2
1
5
2
1
2
2
0
1
2
1
0
(47)10 =(57)8 =(101 111)2
Règle de conversion : Pour convertir un nombre de la base 2 vers la base 8, il faut découper
ce nombre en bloc de 3 bits en partant de la droite vers la gauche pour la partie entière et de
la gauche en allant vers la droite pour la partie fractionnaire ensuite remplacer chaque bloc
par sa valeur octale correspondante.
Pour convertir un nombre de la base 8 vers la base 2, il suffit de transcrire chaque chiffre de
ce nombre en binaire sur 3 bits (en partant du poids faible).
Exemple :
( 101 111 100 001 )2 =(5 7 4 1 )8
( 67315)8 = (110 111 011 001 101 )2
-Conversion binaire hexadécimal (16=24) :
La propriété d’équivalence entre le binaire et l’octale existe aussi entre le binaire et
l’hexadécimal, la seule différence est qu’il faut prendre des blocs de 4 bits.
Mme F.DJIDEL
Page 5
Exemple :
(1 101 0000 1100)2 =(D 0 C )16
Pour convertir un nombre de la base 8 vers la base 16 ou inversement, on peut transiter par la
base 10 mais on peut également passer par la base 2.
Base 8 base 2 base 16
Base 16 base 2 base 8
Exemple : Convertir (232)8 vers la base 16
(2 3 2)8 = (010 011 010)2 = (0 1001 1010)2 = (9 A)16
(11101,01011)2 = (011 101 , 010 110)2 = ( 35,26)8
(11101,01011)2 = (0001 1101 , 0101 1000)2 = (1D,58)16
Tableau de conversion décimal-Binaire
Décimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IV.
Binaire
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadécimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Les opérations arithmétiques en binaire
Les opérations appliquées en décimal sont les mêmes dans n’importe quelle base, il
n’ya que la base qui change.
1. L’addition binaire :
0 + 0= 0
0+1=1
1+0=1
1 + 1 =0 report 1
Remarque : Le report apparait dès que la somme atteint la base.
Mme F.DJIDEL
Page 6
Exemple :
2. La soustraction binaire :
0–0=0
0 – 1 = 1 emprunt 1
1–0=1
1–1= 0
Exemple : réaliser (11101) - (0111)
3. La multiplication :
0 x 0 =0
0x1=0
1x0=0
1x1=1
Exemple :
1101
X 1011
1101
1101.
13
x 11
= 143
multiplicande
multiplicateur
101. . .
10001111
La multiplication consiste à faire une suite d’addition avec le multiplicande décalé vers la
gauche. Cette opération est répétée autant de fois qu’il y’a d’éléments binaires dans le
multiplicateur. Il faut donc pour réaliser une multiplication disposer de la fonction d’addition
et de décalage.
Mme F.DJIDEL
Page 7
4. La division binaire :
V.
Représentation des nombres entiers signés
Il existe deux types d’entiers :
- Les entiers non signés (positifs par exp : une longueur).
- Les entiers signés (positifs ou négatifs par exp : une température)
Nous posons le problème : Comment indiquer à la machine qu’un nombre est négatif ou
positif ?
Il existe trois méthodes pour représenter les nombres signés :
-
Représentation signe/valeur absolue (SVA)
Représentation en complément à un CA1 (complément restreint).
Représentation en complément à deux CA2 (complément à vrai).
Pour traiter les nombres signés, on ajoute un bit de signe au nombre, « 0 » pour les nombres
positifs et « un » pour les nombres négatifs.
1. Représentation signe/valeur absolue (SVA)
Dans cette représentation, un nombre est représenté par son signe et sa valeur absolue en
binaire.
Exemple : (+52)=0 1 1 0 1 0 0
(-52)= 1 1 1 0 1 0 0
Exemple : Nous utilisons n=3 bits pour représenter des nombres en SVA
Signe
0
0
0
0
1
1
1
1
VA
00
01
10
11
00
01
10
11
N
+0
+1
+2
+3
-0
-1
-2
-3
Mme F.DJIDEL
Page 8
Dans cette représentation, si nous utilisons n bits, l’intervalle des valeurs qu’on peut
n- 1
représenter est : -(2
– 1) ≤ N ≤ +(2n- 1 – 1)
Cette représentation est assez simple, le « 0 » possède deux représentations +0 et -0, ce qui
conduit à des difficultés au niveau des opérations arithmétiques.
2. Représentation en complément à un (CA1):
On appelle complément à un d’un nombre N un autre nombre N’ tel que : N + N’ = 2n – 1
Avec n le nombre de bits de N
Exemple : N= 1010 (4 bits), N’ = (24 – 1) – N =15-N=(1111)2 – (1010)2 =(0101)2
Pour trouver le complément à un d’un nombre, il suffit d’inverser tous ses bits.
Exemple : CA1(11010) = (00101)
CA1(0101101) = (1010010)
Remarque :
-
Pour les nombres signés, le bit de poids fort indique le signe du nombre.
CA1(CA1(N))=N
Exemple :- Quelle est la valeur décimale représentée par la valeur 101010 en CA1 sur 6 bits.
Le bit de poids fort = 1, donc le nombre est négatif
Valeur = -CA1(101010)=- (010101)2 = -(21)10
-Nous utilisons 3 bits pour représenter des nombres en CA1
Décimal
+0
+1
+2
+3
-0
-1
-2
-3
CA1
000
001
010
011
111
110
10 1
10 0
 Dans cette représentation, si nous utilisons n bits, l’intervalle des valeurs qu’on peut
n- 1
n- 1
représenter est : -(2 – 1) ≤ N ≤ +(2 – 1).
 Dans cette représentation le « 0 » possède deux représentations.
Mme F.DJIDEL
Page 9
3. Représentation en complément à deux (CA2):
Le complément à deux d’un nombre binaire s’obtient simplement en prenant le
complément à un de ce nombre et en ajoutant 1 au bit de poids le plus faible.
CA2(N)=CA1(N) + 1
Exemple :
CA2(101101)=010010+1=010011
CA2(0101.011)=1010.100+0.001=1010.101
Nous utilisons 4 bits pour représenter des nombres en CA2
Décimal
+0
+1
+2
+3
+4
+5
+6
+7
-0
-1
-2
-3
-4
-5
-6
-7
-8
SVA
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
XXXXXX
CA2
0000
0001
0010
0011
0100
0101
0110
0111
0000
1111
1110
1101
1100
1011
1010
1001
1 000
Si nous utilisons 5bits on peut représenter les valeurs : -16 ≤ N ≤ +15
Le CA2 d’un nombre positif est le nombre lui-même en binaire.
Le CA2 d’un nombre négatif est obtenu en calculant le CA2 de son équivalent positif.
CA2(CA2(N))=N
Exemple : (-7)10 = CA2(0111)=(1001)
(+7)= (0111)2
Dans cette représentation le « 0 » ne possède pas une double représentation.
L’intervalle des valeurs qu’on peut représenter si nous utilisons n bits est :
Mme F.DJIDEL
Page 10
-(2n- 1 ) ≤ N ≤ +(2n- 1 – 1)
Grâce au complément à deux toutes soustractions se transforme à une addition
A – B = A+(-B)= A + CA2 (B)
Exemple :
Soit A et B 2 nombres représentés en C2 sur 8 bits, trouver leurs valeurs décimales.
A =( 00110101)CA2 B = (11101011)CA2
A =( 00110101)CA2
le bit de signe est 0 donc A est positif, donc
A =( 00110101)CA2 =+(00110101)2 = 1x20+1x22+1x24+1x25= 1+4+16+32=(+53)10
B = (11101011)CA2 le bit de signe est 1 donc B est négatif, pour trouver la valeur décimale on
doit calculer son CA2 pour revenir à sa vraie valeur binaire :
B= - (00010101)2 = - (1x20+1x22+1x24)=-(1+4+16)= -(21)10
3. Opérations en complément à deux
a. L’addition en CA2
Cas 1 : Deux nombres positifs
+9
0 1 0 0 1 cumulande
+4 + 0 0 1 0 0 cumulateur
+13
01101
Retenue =0
Débordement =0
Remarque : Dans la notation en CA2, il faut s’assurer que le cumulande et le cumulateur
aient un nombre de bits identique.
Cas 2 : Un nombre positif et un nombre négatif plus petit
1
+9
0 1 0 0 1 Retenue=1
-4 + 1 1 1 0 0 Débordement =0
+5
1 00101
+4=00100
La retenue après le bit de signe n’est pas prise en compte dans le résultat.
Mme F.DJIDEL
Page 11
Cas 3 : Un nombre positif et un nombre négatif plus grand
-9
1 10 1 1 1 Retenue=0
+4 + 0 0 1 0 0 Débordement =0
-5
1 1011
Le résultat est négatif et est en CA2
Cas 4 : Deux nombres négatifs
1 1
-9
1 0111
-4 + 1 1 1 0 0
-13 1 1 0 0 1 1
Retenue=1
Débordement =0
Cas 5 : Nombres égaux opposés
-9
10111
+9
01001
0
00000
Retenue=0
Débordement =0
10111
-9
+ 11000
-8
1 01111
- 17
Retenue=1
Débordement=1
Remarque : si nous utilisons 6 bits pour faire (-9)+(-8)
110111
+
111000
110111 1
10111 1=-(010001)2 =-(17)
Retenue = 1
Débordement =0
b. Soustraction en complément à deux
Toute opération de soustraction se résuma à une addition lorsqu’on utilise le
complément à deux
Exemple :
(+9) – (+4) =(+9) + (-4) =(+9) +CA2(-4) = (01001)+ (11100) = 00101
Exercice : Réaliser les opérations suivantes sur 5 bits en utilisant le CA2 (étudier les
cas de dépassement : a) +9+8 b) -7-13 c) +15-1 d) -15+1
Mme F.DJIDEL
Page 12
VI.
4. La retenue et le débordement
 On dit qu’il y-a une retenue si une opération arithmétique génère un report.
 On dit qu’il y-a un débordement (overflow) ou dépassement de capacité si le
résultat de l’opération sur n bits est faux :
- Le nombre de bits utilisés est insuffisant pour contenir le résultat,
autrement dit, le résultat dépasse l’intervalle des valeurs sur les n bits
utilisés.
- En additionnant 2 nombres de signes différents, il ne peut pas y avoir de
dépassement, par contre lorsqu’on additionne deux nombres de même
signe, on a un dépassement si le signe du résultat est différent du signe des
deux nombres additionnés. Un débordement donne toujours un résultat
inexact.
La représentation des nombres réels
Un nombre réel est constitué de 2 parties ; la partie entière et la partie fractionnaire,
séparés par une virgule.
PB : Comment indiquer à la machine la position de la virgule ?
Il existe deux méthodes pour représenter les nombres réels :
- Avec une virgule fixe
- Avec une virgule flottante
VI.1 La virgule fixe :
Dans cette représentation, la partie entière est représentée sur n bits et la partie
fractionnaire sur p bits, en plus un bit pour le signe.
Exemple : n=3, p=2, nous obtenons les valeurs comme indiqués
Signe
0
0
0
0
0
0
0
0
0
0
0
0
0
.
.
.
.
.
.
P.E
000
000
000
000
001
001
001
001
010
010
010
010
011
.
.
.
.
.
.
P.F
00
01
10
11
00
01
10
11
00
01
10
11
00
.
.
.
.
.
.
Valeur
+0.0
+0.25
+0.50
+0.75
+1.0
+1.25
+1.50
+1.75
+2.0
+2.25
+2.50
+2.75
+3.00
.
.
.
.
.
Mme F.DJIDEL
Page 13
0
1
.
.
.
.
1
1
1
1
111
000
.
.
.
.
110
111
111
111
11
01
.
.
.
.
01
01
10
11
+7.75
-7.75
.
.
.
.
-1.00
-0.75
-0.5
-0.25
-7.75 ≤ N ≤ +7.75
Dans cette représentation les valeurs sont limitées et nous n’avons pas une grande précision
(exposant fixe), d’où vient la virgule flottante.
VI.2 La virgule flottante :
Chaque nombre réel peut s’écrire de la façon suivante :
𝑁 = ±𝑀 ∗ 𝐵
Avec M : Mantisse
B : Base
e : Exposant
exemple :
-(110.101)2 = - (0.110101)*23
(1001.11)2 = (0.100111)*24
(1001.11)2 =(0.0100111*25
Il faut donc représenter les nombres sous une forme normalisée afin que la représentation
ne varie pas d’un logiciel à un autre.
L’écriture en virgule flottante est normalisée par la forme IEEE754 (Institute of Electrical
and Electronics Engineers).
Format IEEE754 : On distingue deux normes
-
La simple précision (32 bits)
1 bit
8bits
23 bits
signe
exposant
mantisse
Mme F.DJIDEL
Page 14
-
La double précision (64 bits)
1 bit
11bits
52 bits
signe
exposant
mantisse
Tout nombre réel peut s’écrire de la façon suivante :
𝑁 = ±1, 𝑀𝑎𝑛𝑡𝑖𝑠𝑠𝑒 ∗ 2
é
Le 1 est un bit caché.
La mantisse est la partie après la virgule on l’appelle aussi pseudo-mantisse.
L’exposant biaisé= Exposant réel + Biais
Biais= 2p-1 -1 tel que p : nombre de bits réservés pour l’exposant, dans notre cas p=8
Bais=127. Ceci permet de rendre l’exposant positif.
0000 0000
1111 1111
-
+
127
Le format IEEE 754 est le suivant :
1 bit
signe
8bits
Exposant Biaisé
23 bits
Pseudo-mantisse
Exemple : (8.625)10= (1000.101)2 = (1.000101)*23
Bit de signe=0 car nbre ˃ 0
Exposant réel =3
Exposant Biaisé = 3 + 127 =130 = (10000010)2
Pseudo-Mantisse = 00010100000000000000000
D’où l’écriture de 8.625 dans la norme IEEE754 est :
0 10000010 00010100000000000000000
4 1 0 A 0 0 0 0
(8.625)10 = (410A0000)IEEE754
Mme F.DJIDEL
Page 15
Download