Vous êtes sur la page 1sur 6

Correction TD Codage des informations

Exercice 1. Trouvez l'quivalent dcimal des nombres suivants (dtaillez les calculs au moins pour cette fois-ci avec les poids et les rangs): 1. 1010 10112 2. 1 0000 0000 0000 0000 0000 0000 00002 3. 45610 4. ABC8h 5. A 0000 0000h 1. 1010 10112 = 1 + 2 + 8 + 32 + 128 = 17110 2. 1 0000 0000 0000 0000 0000 0000 00002 En comptant partir de la droite par blocs de 4 (3 pour le premier, 7, 11, 15, etc. ), le 1 se trouve sur le rang 28, donc il s'agit d'un poids de 228 soit 268 435 45610 3. 45610 = 6 + 5*101 + 4*102 = 6 + 50 + 400 = 45610 ;-) 4. ABC8h = 8 + (12 * 16) + (11 * 162) + (10 * 163) = 8 + 192 + 2816 + 40960 = 4397610 5. A 0000 0000h En comptant par bloc de 4, nous arrivons sur le A avec un rang 8, donc le poids sera 168 = 4 294 976 296 Donc A 0000 0000h = 10 * 4 294 976 296 = 42 949 762 960 Exercice 2. Changement de bases Complter la table suivante : nombre base 2 001011012 _ _ _ _ _ _ _ _ 000378 00011111 55510 1000101011 A216 10100010 Exercice 3. Conversions diverses 1. Convertir le nombre fractionnaire .334 en binaire
o o o o

base 8 55 ________ 1053 242

base 10 base 16 45 2D 31 1F ________ 22B 162 ________

en utilisant la base 2 (on demande 16 bits) en utilisant la base 16 (on demande 16 bits) en utilisant la base 256 (on demande 32 bits) en utilisant la base 65536 (on demande 32 bits)

Pour cela, il faut considrer la rgle de conversion la partie fractionnaire d'un nombre pour chaque base. Pour la base 2 : Pour la partie fractionnaire, il faut : 1. Multiplier la fraction 0.334 par 2 (0.334 x 2 = 0.668). Si le rsultat est suprieur 1 (ce qui n'est pas le cas ici),on recommence multiplier par 2 (on obtient 1.336). Un moment le rsultat devient suprieur 1, on dgage alors le premier bit converti 1. Si le rsultat est infrieur 1 (cas de tout l'heure), le premier bit converti est 0. 2. On fait ensuite abstraction de la partie entire et on continue multiplier la nouvelle partie fractionnaire (de 1.336 soit 0.336) par 2 pour obtenir le 2me bit converti (soit 0.668 donc 0). 3. Ainsi de suite... Arrter la conversion la prcision souhaite (8 bits, 16 bits...), dans bien des cas, la fraction ne s'annule pas. 0.334 * 2 0.668 * 2 1.336 * 2 0.672 * 2 1.344 * 2 0.688 * 2 1.376 * 2 0.752 * 2 1.504 * 2 1.008 * 2 0.016 * 2 0.032 * 2 0.064 * 2 0.128 * 2 0.256 * 2 0.512 * 2 1.024 * 2 0.33410 = 0.0101 0101 1000 00012 (Prcision 16 bits) NB: Dans la diapo 32 du cours, c'est ce qui est crit pour le codage de 0.15 (0.0010011001...) en base 2 Voil pour la base 2. Pour la base 16, on a 0.334 * 16 5.344 * 16 5.504 * 16 8.064 * 16 1.024 * 16 0.33210 = 0.5581h (Prcision 16 bits)

En utilisant la base 256 : 0.334 * 256 85.504 * 256 129.024 * 256 6.144 * 256 36.864 85 129 6 36 sur 32 bits en base 256 Ce qui donne en base 2 : (01010101 10000001 00100100) 2 Et en base 16, on obtient :8510 = 55h ; 12910 = 81h ; 3610 = 24h En juxtaposant les 4 blocs de 8 bits 0.33210 = 0.5581 0624 h En utilisant la base 65536 0.334 * 65536 = 21889.024 0.024 * 65536 = 1572.864 2188910 = 5581h ; 157210 = 0624h En transposant le bloc de 16 bits 0.33210 = 0.5581 0624h

2. Convertir en binaire : 8.125, 1/16, 17.375, 0.1 Selon le mme procd 810 = 10002 .12510 = .0012 8.12510 = 1000.00102 .062510 = .00012 17.37510 =00010001 .01102 0.110 = .0001 1001 1001 10012 (prcision 16 bits)

Exercice 4. Suites d'octets Soit la suite : 01101111 01001111 00110000 00110010 11011101 11101111 11001110 11100100 Interprter le sens de cette suite en considrant quil sagit

dentiers cods en binaire pur sur un octet dentiers cods en binaire complment deux sur un octet dentiers cods en binaire complment deux sur deux octets

dune suite de bits reprsentant un texte cod avec un codage de huffman dont la table des codes est la suivante : a :11 b:010 c:011 d:100 e:00 f :1010 et g :1011

Entiers cods en binaire pur sur un octet : 111 79 48 50 221 239 206 228

Entiers cods en binaire complment en 2 sur un octet : 111 79 48 50 -35 -17 -50 -28

Entiers cods en binaire complment en 2 sur deux octets : 28495 12338 -8721 -12572

dune suite de bits reprsentant un texte cod avec un codage de Huffman ccabcaeaeeeaegcgaacaaeagfe

Exercice 5. Entiers et nombres ngatifs On dcide de coder les nombres en binaire, sur 8 bits. Les nombres ngatifs sont cods en utilisant le complment deux.

Donner la reprsentation de -1, 40, -33, 127, -128 en binaire et en hexadcimal

-1 = 0000 0001 (tape 1) 1111 1110 (tape 2) 1111 1111 (tape 3) -8= 0000 10000 -> 1111 01111-> 1111 1000 40 = 0010 1000 -33= 00100001 ->11011110->11011111 127= 01111111 -128= 10000000->01111111->10000000

Peut-on reprsenter 129 ? -129 ? Pourquoi ?

Les entiers reprsentables avec des mots de n bits sont ceux compris entre -2n-1 et 2n-1-1. noter que le nombre de valeurs diffrentes reprsentables avec n bits reste naturellement de 2n. Dpassement de capacit : codage sur 9 bits au lieu de 8

Donner la valeur dcimale des 4 octets suivants interprts comme des entiers signs (complment deux), puis non signs : o 12h A1h 9Ch 80h

- 12 hex = 0001 0010 bin = 18 dec (nombre sign ou non sign) - A1 hex = 1010 0001 bin = 161 dec (non sign) et -95 dec (sign) car le bit de signe est 1 - 9C hex = 1001 1100 bin = 156 dec (non sign) et -100 dec (sign) car le bit de signe est 1 - 80 hex = 1000 0000 bin = 128 dec (non sign) et -128 dec (sign) car le bit de signe est 1

Exercice 6. Nombres en virgule flottante 1/ Exprimez en base 10 le nombre rel dont la reprsentation binaire IEEE 754 float (32 bits) est la suivante : |1|10000101|10101011010000000000000|. Les barres verticales vous indiquent la frontire de chaque partie du codage. 2/ Exprimer le nombre 521,625 en codage IEEE 754 sur 32 bits. 3/. Mme question quau 1 avec le codage |0|00000000|11010000000000000000000|. 1/ Plusieurs partie du codage 1|10000101|10101011010000000000000| Signe, exposant et mantisse 23 bits de mantisse, 8 bits dexposant et 1 bit de signe (format flottant simple prcision) soit le nombre (-1)s*(1+M)*2(exposant Biais) cf cours exposant = 133 M = 0.5 + 0.5/4 + 0.5/16 + 0.5/64 +0.5/128 + 0.5/512 = 0,669001 ce qui donne 1,669001 2(133-127) = - 106,8125 2/ 512 en base 2 vaut 0000 0010 0000 0000 0.625 en base 2 vaut exactement 0.101 512.625 vaut 1 0000 0000. 101 on normalise M : 512.625 = 1. 0000 0000 0101 29 (e=9) Do la mantisse M = 0000 0000 0101 (on ne code pas le 1). L'exposant est reprsent par E = e + 127 = 136 = 10001000. Le nombre est positif donc s = 0. Tout cela mis ensemble nous donne : 0|10001000| 00000000010100000000000 et la suite tout seul Exercice 8. Initiation au codage des caractres par le code ASCII Les caractres sont habituellement utiliss avec leur codage ASCII. La table des ces codes donne une correspondance entre chaque caractre et un nombre (son rang dapparition dans la table). 1/ Sachant que le code de A est 65 et celui de a 97, quoi correspond le codage majuscule/minuscule ? Une translation dans la table de codage ASCII damplitude la diffrence entre le code ASCII de a et de A, donc le code ASCII de D correspond au code ASCII de d (97-65) Concrtement, il suffit de modifier le 6me bit pour passer de majuscules minuscules, c'est-dire ajouter 32 au code ASCII en base dcimale. 2/ Les caractres numriques de 0 9 ont des codes allant respectivement de 48 59. Comment peut-on avoir facilement la valeur numrique dun caractre numrique ? Pour un caractre simple, il suffit donc de procder une opration sur le codage qui consiste enlever 48 simple translation 0011 0000 est le code ASCII de 0 0011 0001 est le code ASCII de 1

0011 0010 est le code ASCII de 2, etc La valeur du numrique dun nombre est donc code ASCII(n)- code ASCII(0) NB : on utilise Ord en Pascal

3/ Extension une suite de caractres : donner une mthode pour trouver que la suite de caractres 123 a pour valeur dcimale 123. Pour ts les caractres le convertir en numrique nouvelle valeur = 10* l'ancienne + rsultat de la conversion