BCI INF Module ARSE

TP Représentation des données

B. Dupouy et S. Gadret

SOMMAIRE

  1. Représentation des entiers
  2. Représentation des réels

1. Représentation des entiers

On vous demande d'afficher à l'écran la représentation binaire d'un entier dont vous aurez lu la valeur grâce à la fonction scanf.
Les bits de cet entier seront représentés par les caractères '0' et '1', ces caractètres seront affichés un par un, à l'aide de la fonction putchar(). Par exemple :

Valeur :  10 ->  representation binaire : 0000000000001010
Valeur :  33 ->  representation binaire : 0000000000100001
Valeur : -12 ->  representation binaire : 1111111111110100
Pour plus de détails sur la fonction scanf, faire :
man scanf ou man -s 3s scanf

Pour extraire les bits de cet entier, on utilisera uniquement les décalages et les opérations logiques ("masques").

1.1 Exercices préliminaires

Pour vous familiariser avec les opérations sur les bits (décalages et opérations logiques) on vous propose deux exemples très simples. Faites-les fonctionner avant de commencer l'exercice.

Exemple pour comprendre la notion de decalage :

Le programme est donné ici.
Le résultat de l'exécution de ce programme est le suivant :

Decaler 7 a gauche de 1 -> Resultat =  e(hexa) soit : 14
Decaler 7 a gauche de 2 -> Resultat = 1c(hexa) soit : 28
Decaler 7 a gauche de 3 -> Resultat = 38(hexa) soit : 56
On constate bien que le décalage vers la gauche correspond à une multiplication par deux.

Exemples de masquage :
Le programme est donné ici. L'exécution donne :

Masque = b(hexa), i = 0(hexa) -> Resultat = 0(hexa)
Masque = b(hexa), i = 1(hexa) -> Resultat = 1(hexa)
Masque = b(hexa), i = 2(hexa) -> Resultat = 2(hexa)
Masque = b(hexa), i = 3(hexa) -> Resultat = 3(hexa)
Masque = b(hexa), i = 4(hexa) -> Resultat = 0(hexa)
Masque = b(hexa), i = 5(hexa) -> Resultat = 1(hexa)
Masque = b(hexa), i = 6(hexa) -> Resultat = 2(hexa)
Masque = b(hexa), i = 7(hexa) -> Resultat = 3(hexa)
Masque = b(hexa), i = 8(hexa) -> Resultat = 8(hexa)
Masque = b(hexa), i = 9(hexa) -> Resultat = 9(hexa)
Commentaire :
La valeur b en hexadécimal correspond à 1011 en base 2. Un ET LOGIQUE bit à bit entre une case mémoire et cette valeur conserve les deux bits de poids faible et le bit 3 de cette cellule mémoire.

1.2 Exercices à faire

La visualisation de la représentation binaire d'un entier peut se faire de deux facons :

Exercice 1 (Méthode itérative)

Le squelette du programme est donné la.

Exercice 2 (Méthode récursive)

Cette méthode est plus générale que la précédente : elle permet de passer de la base 10 à n'importe quelle base du type : 2 puissance N. Pour recupérer le canevas du programme cliquez ici.

2. Représentation des réels

Premier exercice

Nous allons maintenant vérifier la représentation interne des réels, représentation que nous rappelons ci-dessous :

 Signe (0/1)   Exposant sur 8 bits   Mantisse NORMALISEE sur 23 bits 

Pour ce faire, nous utiliserons :

On vous demande de compléter un programme dans lequel s'enchainent les actions suivantes :
Pour récupérer un canevas détaillé du programme demandé, cliquer ici.

Second exercice

Une fois ce programme au point, en écrire un second qui propose le service inverse : à partir des champs signe, mantisse, exposant donnés en décimal, fournir la valeur du réel correspondant.

©(Copyright) dupouy@inf.enst.fr