Faculté des Sciences de Tétouan TD 1 SMI-3 2012 2013 Codage des informations & Arithmétique des ordinateurs Corrigé * Remarque 1 Merci de me signaler toute erreur de calcul par mail au hibaoui.ens@gmail.com. 1 Codage Exercice 1 : Donner la valeur décimale des entiers suivants, la base dans laquelle ces entiers sont codés étant précisée. (a) 1011010 et 101110 en binaire (base 2) ; (b) A1AE et C4FB en hexadécimal (base 16) ; (c) 260777 et 41737 en octal (base 8). (a) (1011010) 2 = (90) 10 et (101110) 2 = (46) 10 ; (b) A1AE 16 = (41390) 10 et (C4F B) 16 = (50427) 10 ; (c) (260777) 8 = (90623) 10 et (41737) 8 = (17375) 10. Exercice 2 : Coder les nombres suivants en base 2 puis en base 8 et ce en utilisant les différentes méthodes vues en cours. (280777) 10 (1AF E) 16 (1285) 10 (110101) 10 (3322) 16 (ABCD) 16 (280777) 10 = (001 000 100 100 011 001 001) 2 = (1044311) 8 (1AF E) 16 = (0001 1010 1111 1110) 2 = (15376) 8 (1285) 10 = (0101 0000 0101) 2 = (2405) 8 (110101) 10 = (0001 1010 1110 0001 0101) 2 = (327025) 8 (3322) 16 = (0011 0011 0010 0010) 2 = (31442) 8 (ABCD) 16 = (1010 1011 1100 1101) 2 = (125715) 8 Exercice 3 : 1
1) Indiquer la valeur codée par le mot de 16 bits 1101100101110101 suivant qu il représente un entier non signé, ou un entier signé. 2) Indiquer la valeur codée par la suite 1101100101110101 qui représente un entier signé en complément à 2 sur 2 octets. 1) En non signé, la valeur est (1101100101110101) 2 = (55669) 10. En signé, le premier bit (bit de signe) vaut 1, c est donc un nombre négatif dont la valeur est 101100101110101 2 = 22901 10. 2) c est un nombre négatif. Complément à 2 : 0010011010001011 donc ( 9867) 10. Exercice 4 : Représentation des réels (a) En virgule fixe, décoder le nombre binaire 11.011 puis coder en binaire le réel 11.625. (b) En virgule flottante normalisée, coder en binaire au format simple précision le réel 11.625 et le réel 12.575 (a) décodage : (11, 011) 2 = (3, 375) 10 Codage du réel 11, 625 Sa représentation en base 2 est la suivante : 1011, 101 Représentation en virgule flottante normalisée du réel 11, 625 11, 625 est positif donc le 1er bit sera 0. En binaire le réel vaut 1011, 101 et en normalisant, on trouve : 1, 011101 2 3 On ajoute 127 à l exposant qui vaut 3 ce qui donne 130, soit en base 2 : 1000 0010 La mantisse est composée de la partie décimale de 11, 625 en base 2 normalisée, c est-à-dire 011101 Comme la mantisse doit occuper 23 bits, il est nécessaire d ajouter des zéros pour la compléter : 01110100000000000000000 La représentation du nombre 1, 625 en binaire avec la norme IEEE est donc : 01000 001001110100000000000000000 En hexadécimale : (0100 }{{} 0001 }{{} 0011 }{{} 1010 }{{} 0000 }{{} 0000 }{{} 0000 }{{} 0000 }{{} ) 2 = (413A0000) 16 (b) Codage en binaire au format simple précision du réel 12.575 12, 575 est positif donc le 1er bit sera 0. Sa représentation en base 2 est la suivante : 1100, 10010011001100110011 En normalisant, on trouve : 1, 10010010011001100110011 2 3 On ajoute 127 à l exposant qui vaut 3 ce qui donne 130, soit en base 2 : 1000 0010 La mantisse est composée de la partie décimale de 12, 575 en base 2 normalisée, c est-à-dire 10010010011001100110011 2
La représentation du nombre 12, 575 en binaire avec la norme IEEE est donc : 01000 001010010010011001100110011 En hexadécimale : (0100 }{{} 0001 }{{} 0100 }{{} 1001 }{{} 0011 }{{} 0011 }{{} 0011 }{{} 0011 }{{} ) 2 = (41493333) 16 2 Architecture générale Exercice 5 : 1) Combien d entiers positifs peut-on coder en binaire sur un octet? 2) Combien de bits faut-il pour représenter 65563 entiers différents en binaire? 3) Soit un ordinateur dont les mots mémoire sont composés de 32 bits. Cet ordinateur dispose de 4Mo de mémoire. Un entier étant codé sur un mot, combien de mots cet ordinateur peut-il mémoriser simultanément? 1) (a) En arithmétique binaire entière non signée. un octet contient 8 bits, on peut donc coder 2 8 = 256 entiers. (b) En arithmétique binaire entière signée, le bit le plus à gauche est réservé pour le signe. Par conséquent, on ne peut coder que 2 7 entiers positifs ( avec +0) et 2 7 entiers négatifs (avec 0). Soit au total 2 2 7 = 2 8 = 256 entiers. 2) Avec b bits, on peut coder 2 b entiers différents. Pour coder n entiers, il nous faut donc m bits tels que 2 m 1 < n 2 m, c.-à-d. m 1 < log 2 n m. On a donc m = log 2 n. Pour n = 65563, on a m = log 2 65563 = 17. 3) 4Mo = 4 2 20 octets, un mot est composé de 4 octets. Cet ordinateur peut donc mémoriser 4 2 20 4 = 2 20 = 1048576 mots. Exercice 6 : En utilisant la représentation binaire sur 8 bits en complément à deux des entiers, 1) Écrire le nombre 0, 4, 5, 100 et 100. 2) Déterminer l entier positif maximum (resp. négatif minimum) pouvant être codé. 3
1) Représentation des nombres en complément à 2 sur 8 bits Les nombres 0, 4, 100 sont positifs leurs représentations respectives sur 8 bits sont : 0000 0000, 0000 0100, 0110 0100. Pour coder (-5) : On prend le nombre positif 5 : 0000 0101 On inverse les bits : 1111 1010 On ajoute 1 : 1111 1011 Pour coder -100 : On prend le nombre positif 100 : 0110 0100 On inverse les bits : 1001 1011 On ajoute 1 : 1001 1100 2) L entier positif maximum (resp. négatif minimum) pouvant être codé. l entier positif maximum correspond à la valeur (0111 1111) 2 = (127) 10 l entier négatif minimum correspond à la valeur (1000 0000) 2 = ( 128) 10 3 Arithmétique des ordinateurs Exercice 7 : Coder en binaire sur un octet les entiers 134 et 44 puis effectuer l addition binaire des entiers ainsi codés. Vérifier que le résultat sur un octet est correct. Même question avec les entiers 234 et 44. Sur 1 octet : (134) 10 = (10000110) 2 et (44) 10 = (00101100) 2 et (234) 10 = (11101010) 2 1 0 0 0 0 1 1 0 + 0 0 1 0 1 1 0 0 = 1 0 1 1 0 0 1 0 = (178) 10, le résultat est correct 1 1 1 0 1 0 1 0 + 0 0 1 0 1 1 0 0 = 0 1 0 1 0 1 1 0 = (86) 10, le résultat est faux!!! Dépassement de capacité Exercice 8 : 1) Coder les entiers 61 et 61 sur un octet en utilisant la représentation par le signe et la valeur absolue. 2) Montrer que l addition binaire de ces entiers ainsi codés produit un résultat incorrect. 3) Montrer qu en revanche le résultat est correct si ces entiers sont codés en utilisant la représentation par le complément à 2. 1) En utilisant la représentation signe plus valeur absolu, nous avons sur un octet : (61) 10 = (0011 1101) 2 et ( 61) 10 = (1011 1101) 2 4
2) l addition en binaire 0 0 1 1 1 1 0 1 + 1 0 1 1 1 1 0 1 = 1 1 1 1 1 0 1 0 Le résultat est faut puisque (11111010) 2 = ( 122) 10. 3) Si nous utilisons le complément à deux nous avons : (-61) est un nombre négatif dont le complément sur un octet est : 01000011 l addition donne : 0 0 1 1 1 1 0 1 + 0 1 0 0 0 0 1 1 = 1 0 0 0 0 0 0 0 Le décodage du résultat donne le nombre ( 0) 10. Donc le résultat est correct. Exercice 9 : Coder en binaire sur un octet les entiers 101 et 35 puis effectuer la multiplication et la division binaire des entiers ainsi codés. (101) 10 = (1100101) 2 et (35) 10 = (100011) 2 La multiplication binaire : 1 1 0 0 1 0 1 1 0 0 0 1 1 = 1 1 0 0 1 0 1 1 1 0 0 1 0 1. 0 0 0 0 0 0.. 0 0 0 0 0 0... 0 0 0 0 0 0.... 1 1 0 0 1 0 1..... = 1 1 0 1 1 1 0 0 1 1 1 1 Nous avons bien (110111001111) 2 = (3535) 10 = (35 101) 10. La division binaire 2Do Exercice 10 : Faire les opérations suivantes a) base 2 1100 + 10101100 10101100 1010 b) base 8 31 + 6213 32502 3 c) base 16 31 + 82123 42102 39 CA34 A 5
a) base 2 1100 + 10101100 10101100 1010 = 11000000000 b) base 8 31 + 6213 32502 3 = 111442 c) base 16 31 + 82123 42102 39 = E3381E CA34 A = (1438, 66) 16 6