Représentation des nombres (2)



Documents pareils
TP 1 : 1 Calculs en binaire, octal et hexadécimal

Rappels Entrées -Sorties

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Logiciel de Base. I. Représentation des nombres

Conversion d un entier. Méthode par soustraction

Recherche dans un tableau

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Représentation d un entier en base b

Chapitre 10 Arithmétique réelle

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Représentation des Nombres

Chapitre 1 I:\ Soyez courageux!

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Une version javascript sera disponible directement dans le cours prochainement.

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

DM 1 : Montre Autoquartz ETA

Codage d information. Codage d information : -Définition-

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Algorithmique et Programmation, IMA

Licence Sciences et Technologies Examen janvier 2010

Programmation Structurée en Langage C

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

ALGORITHMIQUE ET PROGRAMMATION En C

Initiation à la programmation en Python

Bases de programmation. Cours 5. Structurer les données

Architecture de l ordinateur


Carte de référence rapide

Cours Informatique 1. Monsieur SADOUNI Salheddine

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

La mémoire. Un ordinateur. L'octet. Le bit

Vers l'ordinateur quantique

Informatique Générale

Cours 14 Les fichiers

V- Manipulations de nombres en binaire

IFT2880 Organisation des ordinateurs et systèmes

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Compte-rendu de projet de Système de gestion de base de données

Télécom Nancy Année

Cours de Programmation 2

UE Programmation Impérative Licence 2ème Année

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

Généralités sur le Langage Java et éléments syntaxiques.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Peut-on tout programmer?

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

IV- Comment fonctionne un ordinateur?

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Programmation en langage C

Le langage C. Séance n 4

Les chaînes de caractères

Programmation C. Apprendre à développer des programmes simples dans le langage C

Utilisation d objets : String et ArrayList

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Introduction à l'informatique. Vincent Boyer et Jean Méhat

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

I. Introduction aux fonctions : les fonctions standards

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Logiciel de base. Première année ENSIMAG

TP 1. Prise en main du langage Python

Canon Mobile Printing FAQs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

NOTATIONS PRÉLIMINAIRES

Cours d initiation à la programmation en C++ Johann Cuenin

Le poids et la taille des fichiers

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Guide Google Cloud Print

SOCIETE D'INFORMATIQUE MULTI-SOLUTIONS INC.

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Poker. A rendre pour le 25 avril

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Impression mobile Brother Guide utilisateur - Logiciel

Algorithme. Table des matières

Solutions du chapitre 4

Compression de Données - Algorithme de Huffman Document de Conception

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

I- Définitions des signaux.

TD3: tableaux avancées, première classe et chaînes

Exercices de dénombrement

TP, première séquence d exercices.

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Programmation C++ (débutant)/instructions for, while et do...while

Les structures. Chapitre 3

Le défi : L'avantage Videojet :

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère


Guide utilisateur Module Parents

Version 3.0 Mai P Xerox Mobile Print Cloud Guide d utilisation et de dépannage pour l utilisateur

Les opérations binaires

Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Traitement numérique de l'image. Raphaël Isdant

Programmation assembleur : aperçu

Conventions d écriture et outils de mise au point

CONTROLEUR D'IMPRESSION FIERY

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Transcription:

Univ. Lille 1 - Licence Informatique 2ème année 2013-14 Codage de l'information Représentation des nombres (2) Objectifs du TP Ce TP a pour but 1. d'étudier la programmation des conversions entiers <-> chaînes de caractères ; 2. et d'étudier la représentation des nombres ottants. Outils utilisés le langage Objective Caml ; des utilitaires de représentation de la norme IEEE 754 des ottants. La documentation des diérentes fonctions à réaliser est disponible à l'adresse http://www.fil.univ-lille1.fr/~wegrzyno/portail/codage/doc/tp/tp-nombres2/doc/conversions.html. 1 Conversion d'un entier en une chaîne de caractères Il s'agit dans cette partie de réaliser une fonction analogue à la fonction string_of_int, mais qui convient pour toutes les bases comprises entre 2 et 16. 1.1 Impression des entiers avec Printf.printf Tous les langages de programmation orent au programmeur la possibilité d'imprimer les nombres entiers. Objective Caml n'échappe pas à la règle, avec la procédure print_int, ou encore la procédure Printf.printf. # print_ int 31415 ;; 31415 - : unit = () # Printf. printf "%d\n" 31415 ;; 31415 - : unit = () Dans le premier cas, la procédure print_int imprime l'entier 31415 (sans passer à la ligne), et dans le second cas, c'est le format d'impression %d qui précise à printf qu'il s'agit d'imprimer un entier (le \n qui suit précise que l'entier imprimé doit être suivi d'un passage à la ligne). Pour des raisons assez simples, il est tout à fait naturel que l'impression se fasse en base 10. Cependant, à la diérence de la procédure print_int, il est possible de demander à la procédure printf d'imprimer les entiers en base 8 ou en base 16. Il sut de remplacer le format %d pour le décimal par les formats %o pour l'octal ou %X ou x pour l'hexadécimal. (il n'existe pas de format pour l'impression en binaire.) Question 1 Imprimez les entiers de votre choix avec la procédure printf et les diérents formats. Quelle diérence y a-t-il entre les formats %x et %X? 1

1.2 Remarque sur les entiers de Objective Caml Question 2 Écrivez une instruction en Caml qui permet d'acher les puissances de 2 consécutives pour les exposants variant de 0 à 40. Vous devz obtenir un achage semblable à celui-ci : 0 : 1 1 : 2 2 : 4 3 : 8 4 : 16 5 : 32 6 : 64 7 : 128 8 : 256 9 : 512 10 : 1024... Question 3 Qu'observez-vous pour la puissance 30ème? Et pour les puissances qui suivent? Expliquez! Si les procédures print_string et printf impriment les entiers en base 10 (ou en base 8 ou 16 pour la seconde procédure), il n'en reste pas moins que la représentation interne en machine est binaire. Il est donc nécessaire de convertir les entiers machines en des chaînes de caractères que l'on peut imprimer. C'est le but des deux sections qui suivent. 1.3 Transformer un entier en un chire Question 4 Quel est le type des fonctions du langage Caml char_of_int et int_of_char? En particulier, que valent les expressions char_of_int 0? char_of_int 1?... char_of_int 9? Et int_of_char '0'? int_of_char '1'?... int_of_char '9'? int_of_char 'A'? int_of_char 'B'?... int_of_char 'F'? Question 5 Que vaut l'expression char_of_int (int_of_char '0' + n) lorsque n est un entier compris entre 0 et 9? et si n 10? Question 6 Si n désigne un entier compris entre 10 et 15 inclus, quelle expression dépendant de n et utilisant ces deux fonctions donne un caractère compris entre 'A' et 'F' avec la correspondance 10 -> 'A',..., 15 -> 'F'? Question 7 Réalisez une fonction nommée entier_en_chiffre de type int char qui pour un entier compris entre 0 et 15 renvoie le chire (char) hexadécimal correspondant, et pour tout autre entier déclenche l'exception Failure "entier_en_chiffre entier negatif ou trop grand" : 1.4 Convertir un entier en une chaîne de caractères Question 8 Réalisez une fonction nommée entier_en_chaine de type 2

int int string qui pour deux entiers n et b renvoie l'écriture de l'entier n en base b. Cette fonction déclenche l'exception Failure "entier_en_chaine base incorrecte" : si b > 16. Pour cela, vous pourrez utiliser avec prot la fonction let ajoute_ caractere_ en_ tete s c = let s ' = String. make 1 c in s '^ s Question 9 Utilisez la fonction que vous venez de réaliser, ainsi que la procédure printf avec le seul format %s d'impression de chaînes, pour acher sous forme d'un tableau les écritures décimales, binaires, octales et hexadécimales des entiers de 0 à 20. L'achage doit avoir la forme 0 : 0 0 0 1 : 1 1 1 2 : 10 2 2 3 : 11 3 3 4 : 100 4 4 5 : 101 5 5 6 : 110 6 6 7 : 111 7 7 8 : 1000 10 8 9 : 1001 11 9 10 : 1010 12 A 11 : 1011 13 B 12 : 1100 14 C 13 : 1101 15 D 14 : 1110 16 E 15 : 1111 17 F 16 : 10000 20 10 17 : 10001 21 11 18 : 10010 22 12 19 : 10011 23 13 20 : 10100 24 14 2 Conversion d'une chaîne de caractères en un entier Il s'agit maintenant d'étudier l'opération inverse, à savoir convertir une chaîne de caractères représentant un nombre entier écrit dans une base b en l'entier correspondant. En quelque sorte, il s'agit de réaliser l'analogue de la fonction int_of_string. 2.1 Entrée des entiers en hexa ou en octal En Caml, il est possible de travailler avec des entiers écrits en hexadécimal ou en octal. Il sut de préxer l'écriture par 0x pour une écriture hexadécimale, et par 0o pour une écriture octale. 3

# 0 xa ;; - : int = 10 # 0 o17 ;; - : int = 15 # 123 ;; - : int = 123 # 0 x123 ;; - : int = 291 # 0 o123 ;; - : int = 83 # 123 + 0 x123 + 0 o123 ;; - : int = 497 Question 10 Utilisez cette possibilité pour déterminer l'entier dont l'écriture hexadécimale est 314 16. Même chose pour l'entier écrit en octal 314 8. 2.2 Convertir un chire en entier Question 11 Réalisez la fonction chiffre_en_entier de type char int qui renvoie l'entier correspondant au chire passé en paramètre. Cette fonction doit déclencher l'exception Failure "chiffre_en_entier chire incorrect" : si le chire passé en argument n'est pas l'un des caractères '0', '1',..., '9' ou 'A', 'B',..., 'F'. 2.3 Convertir une chaîne en entier Question 12 Réalisez la fonction chaine_en_entier de type string int int qui renvoie l'entier dont l'écriture est passée en (premier) paramètre dans la base passée en (seond) paramètre. Cette fonction doit déclencher l'exception Failure "chaine_en_entier base incorrecte" : Question 13 Si vous considérez votre NIP comme une chaîne de caractères de longueur 8, cette chaîne peut être considérée comme l'écriture hexadécimale d'un nombre entier. Quel est cet entier? 3 Opérations logiques sur les entiers 3.1 Les opérateurs logiques sur les entiers en Caml Les opérateurs logiques sur les entiers sont prédénis en Caml. land : int int int opération et bit à bit. lor : int int int opération ou bit à bit. lxor : int int int opération ou exclusif bit à bit. lnot : int int opération non bit à bit. 4

lsl : int int int décalage à gauche. lsr : int int int décalage à droite. Question 14 Testez chacune de ces fonctions dans un interpréteur du langage. Question 15 Quelle est la signication arithmétique de l'opération logique n lsl 1? Et de n lsr 1? Question 16 Reprenez la question?? sans utiliser d'opérations arithmétiques, mais uniquement des opérations logiques. Question 17 Comment avec les opérations logiques peut-on tester si un entier est pair? 3.2 Retour sur la conversion en base 2 Il s'agit ici de revenir sur la conversion d'un entier en une chaîne binaire et réciproquement. Question 18 Sans utiliser d'opérations arithmétiques, réalisez la fonction entier_en_chaine_binaire de type int string qui donne l'écriture binaire de son argument. Question 19 Comparez l'écriture binaire obtenue pour deux entiers de signes contraires. Explication? Question 20 de type Sans utiliser d'opérations arithmétiques, réalisez la fonction chaine_binaire_en_entier string int qui à partir d'une écriture binaire renvoie l'entier qui lui correspond. Cette fonction déclenche l'exception Failure "chaine_binaire_en_entier symbole non binaire" : 4 Représentation des ottants Utilisez les liens qui suivent pour étudier sur quelques exemples la représentation des ottants 1. Conversion de la représentation décimale en représentation IEEE-754 sur 32 et 64 bits Conversion de la représentation sur 32 bits en écriture décimale Conversion de la représentation sur 64 bits en écriture décimale En particulier répondez aux questions qui suivent Question 21 Quelles sont les représentations sur 32 et 64 bits de 3, 141592? Donnez la représentation sous forme hexadécimale. Quelles sont les valeurs du signe s, de l'exposant e et de la mantisse m? Question 22 Quel est le nombre dont le codage sur 32 bits est 0F 1E2D3C? Question 23 Quel est le plus petit réel positif représentable sur 32 bits? sur 64 bits? Question 24 Quel est le plus grand? 1. ces pages proviennent du site http://babbage.cs.qc.edu/ieee-754/. 5