TD INFORMATIONS ET MACHINES NUMERIQUES - Travaux Dirigés de INFORMATIONS ET MACHINES NUMERIQUES 1
TD n 1: Système de Numération 1. Conversion Binaire / Hexadécimale/ Décimale Les bases les plus utilisées pour la représentation des nombres sont les bases : décimale, binaire et hexadécimale. N () désigne la représentation d un nombre N dans la base, N (2) dans la base binaire et N (16) sa représentation dans la base hexadécimale. Si un nombre de n bits s écrit en binaire sous la forme compacte suivante : N = b b b b ( 2) n 1 n 2 1 0 Il est possible d obtenir sa représentation dans la base décimale en effectuant directement le calcul : N = b 2 + b 2 + + b 2 + b 2 ( ) n 1 n 2 1 0 n 1 n 2 1 0 De même, pour la représentation hexadécimale : N = h 16 + h 16 + + h 16 + h 16 ( ) n 1 n 2 1 0 n 1 n 2 1 0 En utilisant cette méthode, convertir les nombres suivants : Binaire Décimale : 111; 00; 01011 et 11. Hexadécimale Décimale : 12; AB1; 1F40 et D0C7C. Octal (base 8) Décimale : 27 et 134. 2. Conversion Décimale Binaire / Hexadécimale/ Le passage de la base décimale vers une autre base s effectue en divisant le nombre de départ N () par B (la valeur base d arrivée) jusqu à ce que le quotient soit inférieur à B. La reconstruction de N (B) se fait en concaténant les restes des divisions successives : 4 () 2 0 2 2 0 1 4 () = 0 (2) En utilisant cette méthode, convertir les nombres entiers suivants : Décimale Binaire: 35; 78; 128; 511. Décimale Hexadécimale : 35; 78; 128; 511. Décimale Octale : 35; 78; 128; 511. 2
Convertir en binaire les nombres décimaux suivants : 45,21 ; 12,86 ; 2,5024. La représentation se fera sur 8 bits. Dans chaque cas, on calculera l erreur de représentation commise. 3. Conversion Binaire Hexadécimale En remarquant que, F ( ) = 1111 16 ( 2), la conversation du binaire à l hexadécimale s effectue en regroupant 4 par 4 les bits de N (2). Inversement, la conversation hexadécimale vers le binaire s effectue en remplaçant chaque digit de N (16) par 4 bits. Binaire Hexadécimale : 1111; 00; 1011; 111111 et 11110001. Hexadécimale Binaire : AB1; 12; 4F40 et D0C7C. 4. Question de cours Quel est le nombre maximal que l on peut atteindre avec un mot de 6 bits? Quel est le nombre d entiers qu il est possible de générer avec ce mot de 6 bits? 3
Annexe Numérique 2 0 =1 16 0 =1 Log ( 0 ) 0 = 2 1 =2 16 1 =16 Log ( 2) 0. 3 2 2 =4 16 2 =256 Log ( 1 ) 1 = 2 3 =8 16 3 =4096 Log ( 2 ) 2 = 2 4 =16 16 4 =65536 2 5 =32 16 5 =48576 2 6 =64 2 7 =128 2 8 =256 2 9 =512 2 =24 2 11 =2048 2 12 =4096 2 13 =8192 2 14 =16384 4
TD n 2: Arithmétique binaire 1. Addition binaire L addition binaire se présente comme l addition dans la base décimale. C est à dire que lorsque la somme binaire dépasse 1 (B-1), on ajoute une retenue sur la somme : retenue 1 1 0 1 1 + 0 0 1 1 0 0 Dans le cas où une retenue apparaîtrait, on ajoutera un bit supplémentaire entre parenthèse à gauche du résultat. Calculer : 0000 + 000011 11 + 0111 000111 + 000111 000111 + 000111 + 000111 + 000111. Existe-t-il un moyen plus simple pour ces deux derniers exemples. Convertir les nombres binaires précédents en hexadécimal et refaire les additions. Calculer : 11,11 + 11,1 ; 0,11+0,1111. Effectuer l addition de +12 et de 12 en utilisant la représentation binaire entière signée sur 6 bits. Le résultat est-il correct? 2. Soustraction binaire En utilisant le complément à 2, il est possible de remplacer la soustraction par une addition. Convertir les nombres en binaire puis calculer leur complément à 2 : 32, 14, 63, 4, 0, 1, 127, 128. Peut-on représenter +128 et 128 avec ce codage? En utilisant la définition du complément, vérifier que C A (C A (x))=x. On considère des nombres entiers négatifs codés par un complément à 2. Trouver la valeur décimale correspondante : 11 ; 1111 ; 11111. En se référant au cours, effectuer les soustractions entre les nombres suivants :+17 et +17, +17 et 14, 80 et -48, +21 et 80, -17 et 17, -36 et 15. 5
Rappeler quels sont les entiers non signés et les entiers signés représentables sur 8bits. Lorsque que le résultat d'une opération est correct mais manque de bits de codage nous générons une retenue (carry) pour indiquer cela (génération d'une anti-retenue ou borrow dans le cas d'une soustraction). Lorsque le résultat n'est pas correct nous générons un dépassement (overflow). Dans les cas suivants, quels sont les indicateurs générés: 53 () +53 () 53 () +7 () 53 () -116 () -7 () -2 () 53 () -53 () -7 () -32 () En «non signée» Validité «signée» Validité 3. Multiplication binaire En reprenant la méthode de la multiplication dans la base décimale, effectuez la multiplication en binaire suivante : (111) 2 (1) 2 Peut-on effectuer cette opération en effectuant des décalages et des additions? 6
-------------------------------------------------------------------------------------------------------- TD n 3 Codage des nombres en machine 1. Représentation des nombres entiers. Donner le plus grand nombre et le plus petit nombre représentable par un calculateur binaire 8 bits avec une représentation non signée, avec une représentation signée. Combien de nombres peut-on représenter avec ce calculateur et ces deux représentations? 2. Représentation Virgule Fixe. Le codage virgule fixe est le plus proche de la représentation entière : b n-1 b n-2 b 0 b -1 b m Partie entière n bits La valeur décimale d un nombre binaire codé en virgule fixe est obtenue par la formule suivante : n = + 2 n 1 X b n 2 bi i= m i 1 2 On qualifie cette représentation de InQm ou Qn.m. Si n=1, alors on qualifie la représentation de Qm. Avec cette représentation virgule fixe, quelle est la valeur du plus grand nombre représentable en machine (X max )? Du plus petit (X min )? Du plus petit en valeur absolue? Du plus petit nombre différent de 0? Peut-on représenter tous les nombres réels appartenant à l intervalle [X max, X min ]? Comment évolue l erreur de représentation avec ce codage? Il est nécessaire de représenter les valeurs suivantes dans un système possédant des mots mémoire sur 8 bits : 13.75, 1.25, 0.125,-0.75, -0.3125 Partie Fractionnaire m bits Quelle représentation (Qn.m) doit choisir le programmeur pour représenter les données avec les plus petites erreurs de représentation? Quelles sont-elles? Réaliser l addition de -0.75+1.25. Quelle est la différence avec une addition entière? Refaire avec 13.75 et 0.125, apparaît-il une erreur de représentation dans le résultat malgré la différence de grandeur entre les deux nombres? Réaliser la multiplication de 0.75*(-0.25) en Q3 sur 4 bits. Quelle est la différence avec une multiplication entière? 7
-------------------------------------------------------------------------------------------------------- 3. Représentation Virgule flottante normalisée. La représentation virgule flottante normalisée représente un nombre de la manière suivante : N = ± 2 Le format d un mot mémoire est le suivant : a E M 7a6a5a4a3a2a1a0 a 7 : bit de signe du nombre (0 : positif, 1 : négatif) ; a 6 a 5 a 4 : exposant codé E ; a 3 a 2 a 1 a 0 : codage de la mantisse M en binaire a 3,a 2 a 1 a 0 (1 M<2). Avec cette représentation virgule flottante normalisée, quelle est la valeur de a 3? La valeur du biais permettant de coder l exposant? Donner le poids de chaque bit de la mantisse. Quel est le nombre maximal représentable?; le nombre minimal (représentables en module)? Convertir dans cette représentation : 1,25; 0,75; 13,75; -0,3125; 0,21875; 0.23 ; 18,15. Dans chaque cas, on calculera l erreur de représentation commise (en relatif et en absolu). Réaliser les additions suivantes en utilisant la méthode des trois étapes (égalisation des exposants, addition des mantisses, normalisation) avec cette notation virgule flottante normalisé : 1,25+2,5 ; 1,75+2,5 ; 2,5+1,125 ; 2,5-1,125. Les résultats sont-ils toujours corrects? Afin de corriger ces erreurs, les calculateurs utilisent des registres plus grands pour effectuer les opérations intermédiaires (double précision). Refaire les deux dernières opérations avec des registres codant uniquement les mantisses sur 8 bits. Les résultats sont-ils tous corrects? 8
-------------------------------------------------------------------------------------------------------- TD n 4 Code de communication 1. Codage de l information Donner le nombre de bits nécessaire pour représenter un code comprenant 00 mots. Coder en BCD les nombres décimaux suivants : 47; 187; 962; 1204. Les nombres suivants sont des nombres BCD, retrouver leur équivalent décimal : 011000; 0100; 000001. Exprimer en ASCII l instruction suivante (sans les guillemets) : «X = 25/Y». Convertir en ASCII les nombres suivants : 2; 3; 6; 9. Donner les mots correspondant, sachant que l on utilise un code de communication avec contrôle de parité paire. Réalisez chacune des conversions suivantes : (137) = ( ) 2 = ( ) BCD = ( ) C25 (328) = ( ) 2 = ( ) BCD = ( ) C25 Un calculateur a mémorisé le nombre binaire suivant : 00 dans un fichier dont on a perdu l extension. Seul le programmeur qui a placé le groupe de données en mémoire en connaît la signification. Voici la liste de possibilité : a) Un nombre décimal non signé, b) Un nombre décimal signé exprimé dans la notation en complément à 2, c) Un code ASCII, d) Un nombre décimal signé exprimé dans la notation entière signée. Pour chacune des possibilités, trouvez la signification du nombre. 9