Skip to content

Latest commit

 

History

History
100 lines (62 loc) · 2.3 KB

File metadata and controls

100 lines (62 loc) · 2.3 KB

TP C++ n°3

Conversion décimale/binaire

La représentation binaire est centrale en programmation système et en architecture des ordinateurs. Ce TP vise à relier les algorithmes de conversion à la représentation machine des entiers.

Objectif

Implémenter et comparer deux méthodes de conversion décimal vers binaire, puis expliquer le cas des entiers signés.

Notions C++

  • boucles et tableaux ;
  • division entière et modulo ;
  • opérateurs bit à bit (>>, &) ;
  • affichage formaté.

Pré-requis

  • TP n°2 ;
  • types entiers ;
  • structures itératives.

Travail demandé

Écrire deux programmes de conversion décimal/binaire :

  • une méthode arithmétique (divisions successives), ;
  • une méthode avec décalages et masques,.

puis comparer leurs sorties.

1. Méthode 1

Implémenter une conversion par divisions successives et stockage des restes.

2. Méthode 2

Implémenter une conversion par lecture des bits et mettant en oeuvre des décalages et masques.

3. Comparaison

Comparer les résultats produits pour les mêmes valeurs d'entrée.

4. Cas des entiers signés

Expliquer la représentation en complément à deux sur des exemples simples.

Contraintes techniques

  • Compilateur GNU C++ ;
  • Système d'exploitation Linux, Mac OS X ou Ms-Windows ;
  • Standard recommandé : C++11 ou supérieur.

Exemples d'entrée/sortie

Exemple 1 :

  • Entrée : 10 ;
  • Sortie attendue : 00000000000000000000000000001010 (sur 32 bits).

Exemple 2 :

  • Entrée : 255 ;
  • Sortie attendue : 00000000000000000000000011111111.

Exemple 3 (si gestion signée) :

  • Entrée : -1 ;
  • Sortie attendue : 11111111111111111111111111111111.

Compilation

g++ -std=c++11 -Wall -Wextra -o dec2bin1 dec2bin1.cxx
g++ -std=c++11 -Wall -Wextra -o dec2bin2 dec2bin2.cxx

Livrables

  • dec2bin1.cxx ;
  • dec2bin2.cxx ;
  • README.md (comparaison des deux méthodes et jeux de test).

Extensions possibles (bonus)

  • Proposer une version avec std::bitset<32> ;
  • Ajouter une conversion inverse binaire -> décimal.

Critères d'évaluation

  • Exactitude des conversions ;
  • Qualité de l'implémentation ;
  • Clarté de l'explication sur les entiers signés ;
  • Qualité des tests et du README.