Univ. Lille 1 - Licence Informatique 2ème année 2016-2017 Objectifs du TP Ce TP a pour but Codage de l information TP 1 : 1. de découvrir quelques opérations logiques sur les nombres 2. et quelques formats de fichiers. Outils utilisés un éditeur hexadécimal (hexedit) un visualiseur d images une calculatrice un éditeur de textes le logiciel (LibreOffice) 1 Calculs en binaire, octal et hexadécimal Vous allez utiliser dans cette partie une calculatrice capable d effectuer des calculs en décimal, binaire, octal et hexadécimal. Cette calculatrice est celle fournie dans l environnement Gnome utilisé dans les salles de TP. Elle se nomme gnome-calculator. 1.1 Démarrer et configurer gnome-calculator 1.1.1 Lancer l exécution de gnome-calculator Deux possibilités 1. depuis un terminal, taper la commande > gnome - calculator & (le > représente l invite (ou prompt) de la ligne de commande, il ne faut donc pas taper ce caractère.) 2. à l aide de la souris, passer par le menu Applications > Accessoires > Calculatrice 1.1.2 Configurer gnome-calculator Assurez-vous d être bien dans le mode Programmation afin de bénéficier des possibilités de calcul dans les bases binaire, octale, décimale et hexadécimale. Pour cela utiliser la barre de menu du logiciel pour choisir l option Mode programmation Cette option sélectionnée, vous devez avoir les fonctionnalités de calcul dans différentes bases, avec les opérateurs associés, comme le montre la figure??. 1
Figure 1 Vue sur la calculatrice gnome-calculator 1.2 Choix de la base Exercice 0-1 Conversions Question 1 Quelles sont les écritures binaires et hexadécimales des entiers 1, 10, 100, 1000? Question 2 Quelle sont les écritures décimales et hexadécimales des entiers dont la représentation binaire est 1, 10, 100, 1000, 10000? Exercice 0-2 Représentations et tailles Question 1 Recherchez le plus grand entier (en décimal) qui peut s écrire avec t chiffres en base 16, pour chacune des valeurs de t comprises entre 1 et 6 Question 2 Reprenez la question précédente pour le plus grand entier qui peut s écrire avec t chiffres en binaire. 2
2 Examen de fichiers avec un éditeur hexadécimal hexedit est un éditeur hexadécimal. Il permet d éditer (c est-à-dire visualiser et modifier) n importe quel fichier en mode hexadécimal. 2.1 Création de fichiers Question 3 Créez un fichier a.txt avec un éditeur de textes (surtout pas un traitement de textes) dans lequel vous écrirez uniquement la lettre a. Regardez le contenu de ce fichier en utilisant hexedit > hexedit a. txt Quel est le contenu réel de ce fichier? Comment expliquez-vous ce que vous voyez? Question 4 En utilisant uniquement hexedit, modifiez le contenu du fichier pour transformer la lettre a en b et sauvegardez le résultat (en appuyant sur la touche F2). Question 5 Créez maintenant un fichier appelé bin.txt avec un éditeur de textes. Écrivez-y la représentation du chiffre 5 en binaire. Regardez le contenu de ce fichier en utilisant hexedit : > hexedit bin. txt La valeur est-elle bien stockée sur trois bits? Comment expliquez-vous ce que vous voyez? Question 6 Quel est le volume minimal d informations que l on peut stocker dans un fichier (en bits)? 2.2 Trois fichiers contenant un texte Récupérez l archive cigale.zip et décompressez-la! Elle contient trois fichiers contenant le même texte : 1. cigale1.txt 2. cigale2.txt 3. cigale1.odt Exercice 0-3 Question 1 Récupérez ces fichiers dans votre répertoire personnel. Question 2 Ouvrez ces fichiers à l aide d un éditeur de textes. Voyez-vous une différence entre ces fichiers? Question 3 Ouvrez ces trois fichiers à l aide du logiciel LibreOffice (cherchez dans le menu). Voyez-vous une différence? 3
Question 4 Quelle est la taille en octets de ces fichiers? Pour le savoir, dans un terminal tapez la commande ls -l. Question 5 Ouvrez les trois fichiers avec un éditeur hexadécimal. Pour cela dans un terminal tapez la commande hexedit suivie du nom du fichier à éditer. Par exemple > hexedit cigale1. txt Q 5 1 Reconnaissez-vous le texte contenu dans chacun des trois fichiers? Q 5 2 Quelle différence y a-t-il entre les fichiers cigale1.txt et cigale2.txt? 2.3 Deux fichiers contenant une image Voici deux fichiers contenant la même image : 1. adage.bmp au format bitmap 2. adage.gif au format gif. Exercice 0-4 Question 1 Récupérez ces fichiers dans votre répertoire personnel. Question 2 Visualisez chacune de ces images à l aide de la commande display. Pour cela dans un terminal, tapez la commande > display adage. bmp & Voyez-vous une différence entre les deux images à l écran? Question 3 Quelle est la taille de chacun des deux fichiers? Quel est le format le plus économique en taille? Question 4 Visualisez le contenu de chacun des deux fichiers à l aide de hexedit. Que constatez-vous? Question 5 Faîtes une copie du fichier adage.bmp sous le nom adage2.bmp. Éditez le contenu de cette copie avec hexedit. Modifiez au moins une vingtaine d octets consécutifs de votre choix à partir de l octet 03C0 16. La valeur donnée aux octets devra être très différente de la valeur d origine. Enregistrez la modification (en appuyant sur F2) et visualisez le résultat avec la commande display. Qu obervez-vous? Question 6 Faîtes le même travail avec le fichier adage.gif. Que se passe-t-il? Tentative d explication... 4
Question 7 Faîtes à nouveau une copie du fichier adage.bmp sous le nom adage3.bmp. Ouvrez le fichier adage3.bmp avec hexedit et rendez-vous à l octet 3C0 16. Vous devez observer qu à partir de cette position la quasi totalité des octets possèdent une même valeur que nous appellerons j. Quelle est la valeur de j? Cette valeur correspond à la couleur de fond dans l image. En modifiant un seul octet dans le fichier, nous allons être capable de modifier la couleur de fond dans l image. Le format BMP définit une «palette» de couleurs qui sont ensuite utilisées dans l image. La valeur j fait référence à une couleur de la palette, la j + 1-ème. Cette palette est définie à partir de l octet 36 16 dans le fichier BMP. Dans la palette, chaque couleur est définie sur 4 octets. Fichier bitmap 0x32. Un octet...... Premier octet de la palette Couleur 0 Couleur 1 Couleur 2 0x3C0 j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j Figure 2 Schéma de portions d un fichier bitmap présentant la palette de couleurs (en haut) et le contenu du fichier à modifier (en bas). La couleur 0, première couleur de la palette, est définie de l octet 36 16 à l octet 39 16 ; la couleur 1, deuxième couleur de la palette, est définie de l octet 3A 16 à l octet 3D 16,... Question 8 À quelle position devez-vous aller pour modifier la couleur correspondant à j? Allez à cette position et modifiez l octet qui s y trouve (ou l un des deux suivants). Enregistrez la modification et visualisez l image pour vérifier que le changement est effectif. 5