TP Représentation des données
B. Dupouy et S. Gadret
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 : 1111111111110100Pour plus de détails sur la fonction scanf, faire :
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 : 56On 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 :
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.
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 :
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