Vous êtes sur la page 1sur 9

Projet Programmation : Conversion dun nombre en binaire Somme de nombres binaires

I. Rpondre aux questions suivantes, sous format dun document HTML


1. 2. 3. 4. 5. 6. 7. 8. 9. Comment linformation est reprsente et manipule dans un ordinateur ? volution de la reprsentation des nombres Les systmes de numration additifs Les systmes de numration position Encodage des nombres entiers dans un ordinateur Encodage des nombres entiers dans un ordinateur Comment reprsenter un texte ? Les diffrents formats dimages, Comment reprsenter une image bitmap ?

II. Conversion et somme binaire. 1. Objectifs


Mettre en uvre lalgorithme de conversion dun entier de la base 2 vers la base 10. Mettre en uvre lalgorithme de conversion dun entier de la base 10 vers la base 2. laborer un algorithme daddition de deux nombres crits en base 2. Programmer et tester ces algorithmes.

2. Cadre de ralisation
Ce projet est not et peut tre ralis individuellement ou en binme. Comptences values : C.2.1 Analyser ; C.2.3 Dvelopper ; C.3.1 Agir au sein dune quipe ; C.4.1 Documenter un projet numrique.

3. Cahier des charges


Voir la fin du document ainsi que lannexe 1. Dautres documents sur les comptences values et la rdacti on du dossier du projet suivront. Voir aussi : http://www.enib.fr/~tisseau/pdf/course/metaExposeSlide.pdf

4. Rappel : Codage binaire codage dcimal 1. Mthode des divisions successives par 2 :
Un nombre binaire est une squence

de chiffres binaires ( ou ) qui reprsente un entier

On crit :

decimal to binary

binary to decimal

Exemple 1. (binary to decimal).

Ce qui donne

= 131

Exemple 2 (decimal to binary

77 1

2 38

38 0

2 19

19 1

2 9 9

9 1

2 4 4

4 0

2 2 2

2 0

2 1

Ce qui donne

Partie A.

Conversion

1. Conversion dun binaire en base 10 : bin2dec


a) b) c) En sinspirant du rappel ci-dessus et de lexemple 1., dcrivez en langage naturel phrases en franais lalgorithme correspondant cette mthode. Ecrivez en pseudo-code (ou laide de AlgoBox) cet algorithme, appelons le bin2dec . Traduisez lalgorithme bin2dec en un programme C bin2dec.c et testez-le.

2. C onversion dun nombre entier dcimal en binaire dec2bin


d) e) f) En sinspirant du rappel ci-dessus et de lexemple 2., dcrivez en langage naturel un algorithme pour convertir un nombre entier en binaire. Ecrivez en pseudo-code (ou laide de AlgoBox) lalgorithme, appelons le dec2bin . Traduisez lalgorithme dec2bin en un programme C dec2bin.c et testez-le.

Partie B.

Addition binaire

1. Addition en base 10
Commenons par rappeler cet algorithme sur un exemple. On veut ajouter les nombres 728 et 456. On commence par ajouter les chiffres des units, 8 et 6. La table de laddition indique que la somme de ces deux chiffres est 14 ; on pose le chiffre des units, 4, et on retient le chiffre des dizaines, 1. On ajoute ensuite les chiffres des dizaines et cette retenue, 2, 5 et 1. La table de laddition indique que la somme de ces trois chiffres est 8 ; on pose le chiffre des units, 8, et on
2

retient le chiffre des dizaines, 0. On ajoute ensuite les chiffres des centaines et cette retenue, 7, 4 et 0. La table de laddition indique que la somme de ces trois chiffres est 11 ; on pose le chiffre des units, 1, et on retient le chiffre des dizaines, 1. Finalement, on pose cette retenue dans la colonne des milliers. Une irrgularit de cette mthode est que, lors de la premire itration, on ajoute deux chiffres, alors quen rgime permanent, on en ajoute trois. On peut corriger cela en commenant par poser la retenue gale 0. La premire itration se formule alors de la manire suivante : on commence par ajouter les chiffres des units et la retenue, 8, 6 et 0, etc. Ainsi, cet algorithme nutilise quune seule table, qui indique la somme de chacun des triplets (a ; b ; c) o a, b et c sont des chiffres compris entre 0 et 9, table quen gnral on connat par cur.

2. Addition en base 2.
Voyons maintenant comment on ajoute des nombres exprims en base deux, par exemple 101 et dire 5 et 7. , cest--

On commence, comme en base dix, par ajouter les chiffres des units et la retenue, 1, 1 et 0. La table de laddition indique que la somme de ces deux chiffres est 10 ; on pose le chiffre des units, 0, et on retient le chiffre des deuzaines, 1. On ajoute ensuite les chiffres des deuzaines et cette retenue, 0, 1 et 1. La table de laddition indique que la somme de ces trois chiffres est ; on pose le chiffre des units, 0, et on retient le chiffre des deuzaines, . On ajoute ensuite les chiffres des quatraines et cette retenue, 1, 1 et 1. La table de laddition indique que la somme de ces trois chiffres est ; on pose le chiffre des units, 1, et on retient le chiffre des deuzaines, . Finalement, on pose cette retenue dans la colonne des huitaines. Le rsultat est donc , (cest--dire 12 en base 10).

3. Table daddition binaire


Complter la table daddition de deux nombres binaires :

je pose 0 et je retiens 1 (voir la remarque)

Remarque Il faut tenir compte, ds le deuxime rang que lon peut avoir une retenue ; donc il faut ajouter au rsultat prcdent la retenue de laddition de rang infrieur. Pour laddition de deux nombres binaires, on peut donc considrer quil faut ajouter chaque rang, 3 bits

Addition binaire : Le rsultat de laddition des nombres binaires

et

est lopration qui

consiste effectuer : Au rang 0 : la retenu tant 0, le bit de est la somme de , et la retenue 0 , A la rang : le bit de est la somme de , et la retenue du rang , Complter les cases vides du tableau suivant ( signifie ainsi de suite jusquau):

, soit

Complter la table suivante : En considrant une addition binaire comme la 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 somme effectuer sur trois mmoires un bit, Nous aurons comme rsultat : un bit de somme et un bit de retenue. La retenue est gale 1 ds que le rsultat, de la somme aval atteint la valeur 2 ( binaire) ou 3 (11 en binaire). en

4. Algorithme daddition
Soit 2 nombres binaires et . Leur somme reprsente par

et les retenues successives sont reprsents par . En langage C : , et seront reprsents par des variables de type tableau simple. Le nombre 9 sera par exemple reprsent par le tableau : {1,0,0,1}.

1. 2.

Complter lalgorithme daddition en base 2 ci-contre : Dfinir une fonction (programme C) nomme add_2.c qui effectue laddition binaire de A et B. ALGORITHME : Addition en base 2 (le nombre de bits nest pas limit a priori). VARIABLES DEBUT

POUR allant de DE . A .. PAS DE 1 FAIRE a[i] +b[i]+R SI ALORS S[i]

FIN

Attention, 1. il faut penser, au pralable, complter si ncessaire, lune ou lautre des listes reprsentant A et B par des 0 gauche pour pouvoir effectuer lalgorithme daddition sur deux listes de mme taille. 2. Noubliez pas le cas de dbordement. voir lexemple du cours chapitre 1 Reprsentation de

linformation .
Exemple1 : : votre fonction doit complter la liste de procder lajout du nombre binaire reprsent par . Exemple 2. en avant

Sans dbordement Base 2 10010110 + 01111110 = 00010100 Base 10 150 + 126 = 20 (mod 256) Base 2

avec dbordement Base 10 150 + 126 = 276

10010110 01111110

= 100010100

Remarque Attention, ne pas oublier de traiter le cas particulier de la dernire retenue gale 1. Pour encapsuler un algorithme dans une fonction, on suivra pas pas la dmarche suivante : o donner un nom explicite lalgorithme, o dfinir les paramtres dentre-sortie de lalgorithme, o prciser les prconditions sur les paramtres dentre, o donner des exemples dutilisation et les rsultats attendus, o dcrire par une phrase ce que fait lalgorithme et dans quelles conditions il le fait, o encapsuler lalgorithme dans la fonction spcifie par les 5 points prcdents.

Cahier des charges :


3. Ce projet aborde les notions tudies dans le chapitre 1 Reprsentation de linformation et le chapitre 5 Lalgorithmique :
Reprsentation de linformation, codage binaire. Manipulation de linformation et automatisation des procdures On se propose dcrire un programme charg de 1. convertir un nombre entier strictement positif en criture binaire et vice-versa, a. Lentier en base 2 doit tre cod par un tableau comme indiqu ci-dessus. b. Lentier en base 10 sera de type entier int . c. Vous devriez rdiger un dossier format .doc ou .dot : Votre-Nom_TP_bindec.doc ou Votre-Nom_TP_bindec.odt contenant en plus les algorithmes a) et d) (en pseudo-code ou laide dAlgoBox). Ainsi, que les rponses aux questions de ce document. d. Vous devriez rendre un fichier nomm Votre-Nom_TP_bindec.c contenant la fonction bin2dec et la fonction dec2bin et quelques tests de ces fonctions que vous aurez effectus. 2. effectuer laddition de deux nombres binaires saisis par lutilisateur en format dcimale. a. Vous devez fournir lalgorithme daddition en base 2 (complet ). 3. Vous devez regrouper tous les programmes raliss auparavant de la faon suivante : a. Votre programme doit afficher le menu suivant :

------------------------- MENU -----------------------Entrer votre choix 0 : Aide 1 : Convertir en BINAIRE. 2 : Convertir en DECIMALE. 3 : Additionner deux nombres binaires 4 : Quiter --------------------------------------------------------------

b. Votre programme doit contenir 6 fonctions : i. la fonction Aide qui affiche comment utiliser et que fait votre programme ii. la fonction dec2bin qui convertit un nombre dcimal en binaire (ralise en A. 1.) iii. La fonction bin2dec qui convertit un nombre binaire en dcimal (ralise en A. 2.) iv. la fonction addbin qui additionne deux nombre binaire (ralise en B. 4.). v. la fonction principale main() qui excute les cinq taches selon le choix de lutilisateur c. Vous devez galement ajouter des commentaires permettant un programmeur de le comprendre sans ambigut.

Annexe 1. Principales tapes de rsolution dun problme informatique


Cahier des charges Analyse Algorithme Traduction Execution Test/validation
Le cahier des charges

Il contient :
lnonc du problme la spcification des donnes les conditions de fonctionnement analyse

Elle permet davoir une ide claire des tapes raliser pour la rsolution du problme donn, elle est rdige en franais.
Algorithme

On dtaille laide dun langage adapt les diffrents traitements (ou tapes)
Traduction

Il sagit de traduire les tapes prcdentes en langage de programmation (C ou C++, voir JAVA)
Excution

Elle doit permettre de vrifier que le programme fonctionne correctement


Tests/validation Il sagit de valider le respect du cahier des charges. Les tests permettent de valider le programme dans les conditions limites

VARIABLES 2 a EST_DU_TYPE NOMBRE 3 b EST_DU_TYPE NOMBRE 4 c EST_DU_TYPE NOMBRE 5 d EST_DU_TYPE NOMBRE 6 pgcd EST_DU_TYPE NOMBRE 7 e EST_DU_TYPE NOMBRE 8 DEBUT_ALGORITHME 9 AFFICHER "Calcul du PGCD de 2 nombres " 10 AFFICHER " - Algorithme d'Euclide -" 11 AFFICHER " " 12 AFFICHER "Entrer le 1er nombre entier : " 13 LIRE a 14 c PREND_LA_VALEUR a 15 AFFICHER a 16 AFFICHER "Entrer le 2e nombre entier : " 17 LIRE b 18 AFFICHER b 19 d PREND_LA_VALEUR b 20 AFFICHER " " 21 TANT_QUE (d>0) FAIRE 22 DEBUT_TANT_QUE 23 e PREND_LA_VALEUR c%d 24 c PREND_LA_VALEUR d 25 d PREND_LA_VALEUR e 26 FIN_TANT_QUE 27 pgcd PREND_LA_VALEUR c 28 AFFICHER " " 29 SI (pgcd==1) ALORS 30 DEBUT_SI 31 AFFICHER "Les nombres " 32 AFFICHER a 33 AFFICHER " et " 34 AFFICHER b 35 AFFICHER " sont premiers entre eux." 36 AFFICHER " " 37 FIN_SI 38 SINON 39 DEBUT_SINON 40 AFFICHER "Le PGCD de " 41 AFFICHER a 42 AFFICHER " et " 43 AFFICHER b 44 AFFICHER " est " 45 AFFICHER pgcd 46 AFFICHER " " 47 FIN_SINON 48 FIN_ALGORITHME
9

Vous aimerez peut-être aussi