36 0 222KB
Université Moulay Ismail Faculté des Sciences de Meknès Département d’Informatique
Année Universitaire : 2020/2021 Filière : SMIA1 Pr. Ahmed ZAIM
Corrigé TD N°2 Exercice 1 Soit un ordinateur qui représente les données sur 8 bits 1. Compléter le tableau suivant Décimal +100 +56 +7 +2 -2 -7 -56 -100
Binaire pur 01100100 0011 1000 0000 0111 0000 0010
Binaire signé 0110 0100 0011 1000 0000 0111 0000 0010 1000 0010 1000 0111 1011 1000 1110 0100
Complément à 1 0110 0100 0011 1000 0000 0111 0000 0010 1111 1101 1111 1000 1100 0111 1001 1011
Complément à 2 0110 0100 0011 1000 0000 0111 0000 0010 1111 1110 1111 1001 1100 1000 1001 1100
Remarques : BS, C1, C2 (a) le bit de poids fort d’un nombre négatif est toujours 1 ; (b) le bit de poids fort d’un nombre positif est toujours 0 ; Binaire signé Pour coder (-2) : • •
On prend le nombre positif + 2 : On inverse le bit de signe :
0000 0010 1000 0010 correspond à – 2 en BS
Complément à 1 Pour coder (-2) : • •
On prend le nombre positif + 2 :0000 0010 On inverse les bits: 1111 1101 correspond à – 2 en Cà1
Complément à 2 Pour coder (-2) : • •
On prend le nombre positif + 2 On inverse les bits
: :
0000 0010 1111 1101
Page 1 / 10
•
On ajoute 1
:
1111 1101 + 0000 0001 = 1111 1110 correspond à – 2 en Cà2
2. Convertir en décimal les valeurs suivantes Binaire pur Binaire signé Complément à 1 Complément à 2
00011001 10010111 01100100 11000111 00001111 11000111 01101101 11001001
Décimal 25 151 +100 -71 +15 -56 +109 -55
Binaire pur 0001 1001 est un nombre positif dont la valeur décimale est 25 • 1001 0111est un nombre positif dont la valeur décimale est 151 • Binaire signé • 01100100 est un nombre positif dont la valeur décimale est 26 +25+22 = 100 • 11000111 est un nombre négatif alors (11000111)BS=-(01000111)2=-(26 +22+21+20)10 =-(71)10 Complément à 1 • •
0000 1111 est un nombre positif dont la valeur décimale est 15 11000111 est un nombre négatif alors 1ère Méthode (11000111)Cà1= - (not(11000111)) 2= -(00111000)2= - (32 +16+ 8) 10 = - (56)10 2ème Méthode (11000111)Cà1= (-27 + 26 + 22 +21 +20)10 +1= (-128+64+8+1) +1= -57+1=- (56)10
Complément à 2 • •
0110 1101 est un nombre positif dont la valeur décimale est 109 11001001 est un nombre négatif alors
1ère Méthode (11001001)Cà2= - 27 + 26 + 23 + 20= -128+64+8+1= -55 2ème Méthode Page 2 / 10
(11001001)Cà2= - (not (11001001) +1)2 = - (00110110 + 1)2 = - (00110110)2= - (32 +16+ 4 + 2 + 1)= - (55)10
Exercice 2 1. Donner en décimal l’intervalle [min, max] qu’on peut représenter pour chaque cas Bits
2 3 n
Nombre non signé
[0, 3]=[0, 22-1] [0, 7]=[0, 23-1] [0, 2n-1]
Binaire signé
Complément à 1
Complément à 2
[-1, +1] [-3, +3] [-(2n-1-1), +(2n-1-1)]
[-1, +1] [-3, +3] [-(2n-1-1), +(2n-1-1)]
[-2, +1] [-4, +3] [-2n-1, +(2n-1-1)]
Avec 3 bits on peut représenter 8 nombres de 0 à 7=23 -1 La représentation circulaire du codage en binaire pur d’un nombre non signé compris entre 0 et 7 est : Rqs : Cà1 et BS
Cà2
•
2 zéros zéro positif et zéro négatif
• •
1 seul zéro Position symétrique des nombres positifs et négatifs par rapport au zéro
2. Combien faut-il de bits, au minimum, pour coder les nombres non signés (48965)10 et (9965245)10 ? 48965 À partir du tableau, on déduit que la plus grande valeur d'un nombre non signé codé sur n bits (2n - 1) doit être supérieure ou égale à 48965. 2n – 1 >= 9965245 2n>=9965246 ln (2n)>=ln(9965246) nln(2)>=ln(9965246) n>=ln(9965246)/ln(2) n>=23,25 ⇨nMin= 24 En utilisant le même raisonnement que précédemment, on obtient : 2n – 1 >= 48965 2n>=48966 ln (2n)>=ln(48966) nln(2)>=ln(48966) Page 3 / 10
n>=ln(48966)/ln(2) n>=15,58
⇨ nMin = 16
3. Combien faut-il de bits, au minimum, pour coder en binaire complément à 2 les nombres signés (-5)10 et (28)10 ? (-5) À partir du tableau, on déduit que la plus petite valeur d'un nombre signé codé sur n bits (-2n-1) doit être inférieure ou égale à -5. -2n-1 =5 ln(2n-1) >=ln (5)
(n−1) ln(2)>=ln(5) n−1>=ln (5)/ln (2) n>= ln (5)/ln (2)-1 n>=3,33
⇨ nMin = 4
(+28) À partir du tableau, on déduit que la plus grande valeur d'un nombre signé codé sur n bits (2n-1 doit être supérieure ou égale à 28. 2n-1 -1>=28 2n-1 >=29 ln(2n-1)>=ln (29) (n−1)ln(2)>=ln(29) n−1>= ln(29)/ln (2) n>= ln(29)/ln (2)-1 n>=5,86 ⇨nMin = 6
-1)
Exercice 3 Effectuer les opérations suivantes en complément à deux sur 4 bits pour la partie entière et 2 bits pour la partie fractionnaire. Préciser, pour chaque opération, la retenue et le débordement, en justifiant la réponse. 1101.01 + 0100.11 = (1) 0010.00 Il y a une retenue. Il n’y a pas le débordement 1111.01 − 0001.11 = 1101.10 Il n’y a pas une retenue. Il n’y a pas le débordement 0111.01 + 0001.11 = 1001.00 Il n’y a pas une retenue. Il y a le débordement 1001.01 − 0001.11 = 0111.10 Il n’y a pas une retenue. Il y a le débordement Exercice 4 On utilise la représentation en complément à 2, sur n bits. 1. Lorsque n = 8, donner les valeurs binaires des nombres suivants et de leurs opposés : (3) 10, (127) 10, (63) 10. 2. Lorsque n = 8, effectuer en binaire les opérations (51) 10+(127) 10, (−3) 10 + (−127) 10, (−127) 10+(127) 10, (−63) 10 + (−63) 10. Préciser, pour chaque opération, la retenue et le débordement. Page 4 / 10
3. Lorsque n = 12 représenter 497 et -123 en complément à 2 sur 12 bits. 4. Quelle est la valeur décimale de 101010001 s'il s'agit de la représentation à 2 d'un nombre entier sur 9 bits de position ? Correction. On utilise la représentation en complément à 2, sur n bits. 1. Lorsque n = 8, donner les valeurs binaires des nombres suivants et de leurs opposés : (3)10, (127)10, (63)10, (51)10. Décimal Binaire pur Binaire signé Binaire C à 1 Binaire C à 2 00000011 00000011 (+3) 00000011 00000011 3 (-3) 10000011 11111100 11111101 01111111 (+127) 01111111 01111111 01111111 127 (-127) 11111111 10000000 10000001 63 00111111 (-63) 00111111 00111111 00111111 (-63) 10111111 11000000 11000001 51 00110011 (+51) 00110011 00110011 00110011 (-51) 10110011 11001100 11001101 2. Lorsque n = 8, effectuer en binaire les opérations (51)10+ (127)10, (−3)10 + (−127)10, (127)10+ (-127)10, (63)10 + (−63)10. Préciser, pour chaque opération, la retenue et le débordement. 3. Lorsque n = 12 représenter 497 et -123 en complément à 2 sur 12 bits. Décimal Binaire pur Binaire signé Binaire C à 1 Binaire C à 2 497 000111110001 000111110001 000111110001 000111110001 -123 100001111011 111110000100 111110000101 4. Quelle est la valeur décimale de 101010001 s'il s'agit de la représentation en complément à 2 d'un nombre entier sur 9 bits de position ? 101010001 en C à 2 = 110101111 en binaire signé = (- 175) Exercice 5 Effectuer les opérations d’additions suivantes en complément à 2 sur un octet, en précisant que les résultats sont vrais ou faux. Justifier les réponses. a) b) c) d)
0110 1011 + 1011 1101 1001 0110 + 1111 1011 0110 1111 + 0001 1001 1000 0010 + 1010 1011
Correction Effectuer les opérations d’addition suivantes en complément à 2 sur un octet, en précisant que les résultats sont vrais ou faux. Justifier les réponses. a) 10101101 (-83) + 11110010 (-14) Page 5 / 10
= 10011111
(-97)
On peut vérifier le résultat en cherchant les équivalents en décimal. Comme les nombres sont en Cà 2, il faut les convertir en binaire signé avant de chercher leurs équivalent en décimal. Le résultat est juste. b) 10101110 + 10111110 = 01101100 La somme de deux nombres négatif doit donner un nombre négatif alors qu’on a obtenu un nombre positif, donc le résultat est faux. c)
01101101 + 01111011
11101000 La somme de deux nombres positif doit donner un nombre positif alors qu’on a obtenu un nombre négatif, donc le résultat est faux. d)
00100011
(+35)
01010111
(+87)
+ 01111010 Le résultat est juste
(+122)
e)
01101111
(+111)
11111111
(-1)
+ = 01101110 (+ 110) Le résultat est juste : la somme de deux nombres de signe opposé ou bien en cherchant les équivalents en décimal. Exercice 6 1. En virgule fixe, coder en binaire: • 0,48 avec la partie fractionnaire exprimée sur 6 bits • 0,83 avec la partie fractionnaire exprimée sur 4 bits • 37, 62 avec la partie fractionnaire exprimée sur 8 bits Correction Conversion d'un nombre fractionnaire N de la base 10 vers la base 2 Conversion de la partie entière : cfed 1 Conversion de la partie fractionnaire : elle s'effectue en multipliant itérativement la partie fractionnaire par 2. La partie entière résultante donne la conversion de la partie fractionnaire (digit, a , a .., a , ...). -1
-2
-i
Page 6 / 10
•
Conversion de 0; 48, partie décimale sur 6 bits : 0; 48 x 2 = 0; 96 0 0; 96 x 2 = 1; 92 1 0; 92 x 2 = 1; 84 1 0; 84 x 2 = 1; 68 1 0; 68 x 2 = 1; 36 1 0; 36 x 2 = 0; 72 0 0, 48 s'écrit (0, 011110)2.
•
Conversion de 0; 83, partie décimale sur 4 bits : 0; 83 x 2 = 1; 66 1 0; 66 x 2 = 1; 32 1 0; 32 x 2 = 0; 64 0 0; 64 x 2 = 1; 28 1 0, 83 s'écrit (0, 1101)2.
• Conversion de 37; 62, partie décimale sur 8 bits : Partie entière : 32