Vous êtes sur la page 1sur 5

Dlgation dErrachidia Lyce Ibntahir CPGE

Le :01/03/2012 Classes : Mp1 & Mp2 Prof : A Dindane

Devoir surveill PREUVE D'INFORMATIQUE


Dure 2 heures

La prcision des raisonnements algorithmiques ainsi que le soin apport la rdaction et la prsentation des copies seront des lments pris en compte dans la notation. Il convient en particulier de appeler avec prcision les rfrences des questions abordes. Si, au cours de l'preuve, un candidat repre ce qui peut lui sembler tre une erreur d'nonc, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu'il est amen prendre. ******* Remarques gnrales : - L'preuve se compose dun problme deux parties indpendantes. - Toutes les instructions et les fonctions demandes seront crites en langage C. - Les questions non traites peuvent tre admises pour aborder les questions ultrieures. Ce problme s'intresse aux algorithmes ralisant quelques traitements sur les Systmes de numrations dcimal, octal, binaire et hexadcimal : Les systmes de numrations binaire et hexadcimal sont trs utiliss dans les domaines de l'lectronique et de l'informatique. Tout programmeur se doit de les connatre en plus des systmes dcimal et octal. Le systme dcimal est celui dans lequel nous avons le plus l'habitude d'crire des nombres, on utilise 10 symboles appels chiffres et qui sont : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Exemple : 67543 Le systme octal est utilis dans quelques pays, on utilise 8 symboles seulement qui sont:0, 1, 2, 3, 4, 5, 6, 7 Exemple : (3245)8 Le systme binaire ou chaque chiffre peut avoir 2 valeurs diffrentes : 0 ou 1. Exemple : (10110)2 . Le systme hexadcimal qui utilise les 16 symboles suivant :0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, trs utilis en informatique. Exemple :(5AF)16

PARTIE A : CONVERSION DUN NOMBRE ECRIT EN DECIMAL, OCTAL, OU HEXADCIMAL VERS LE BINAIRE.
1 passage du dcimal au binaire : Algorithme : On procde par des divisions successive par 2 jusqu ce quon obtient un quotient nul, les restes de ces divisions entires constituent les chiffres du nombre en binaire. Le dernier reste est le bit de poids fort. Exemple :

Question 1 : Dclaration dune pile + Donner les dclarations en langage C, permettant de crer une pile dentier. Question 2 : empiler une donne. +Ecrire une fonction en langage C qui reoit deux paramtres, la tte dune pile et lentier empiler et qui empile cet entier dans la pile. Question 3 : Affichage des lments dune pile +Ecrire une fonction en C qui reoit la tte de la pile et qui affiche les lments de cette pile dans une mme ligne et sans espace entre les lments. Question 4 : conversion dun nombre dcimal en binaire + crire une fonction C, de prototype void decimaltobinaire(int n), qui reoit un nombre entier positif crit en dcimal et qui affiche son quivalent en binaire. Utiliser une pile pour sauvegarder les chiffres en binaires pour les afficher en fin de calcul. Exemple : - Si n=75 la fonction affiche 1001011

2 : passage de loctal en binaire sans passer par la base 10 On peut passer dun nombre crit en base 8 vers son quivalent en base 2 en remplaant chaque chiffre du premier nombre par son criture en binaire sur trois bits (8=23). Tableau de conversion : Chiffres en octal Equivalent binaire Exemple : ( 6315 )8 ( 110 011 001 101 )2 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111

Question 5 : extraction des chiffres dun entier + crire une fonction en langage C qui reoit un entier N, la tte dune pile dentiers et qui empile les chiffres de N dans cette pile et retourne la tte de cette pile. Exemple : pour N=50417 La pile contiendra :

5 tete

NULL

Remarque : pour extraire les chiffres de N on utilise les deux oprateurs % : qui donne le reste dune division entire (356 % 10 donne 6) / : qui donne le quotient entier dune division entire (356 / 10 donne 35) Question 6 : conversion octal binaire + crire une fonction en langage C qui reoit un entier N en octal, qui affiche sont quivalent binaire. Exemple : pour N=50417 la fonction affiche : 101000100001111 Question 7 : conversion hexadcimal binaire On peut passer dun nombre crit en base 16 vers son quivalent crit en base 2 en remplaant chaque chiffre du premier nombre par son criture en binaire sur quatre bits (16=24).

Tableau de conversion :
En base 16 En binaire 0 0000 8 1000 1 0001 9 1001 2 0010 A 1010 3 0011 B 1011 4 0100 C 1100 5 0101 D 1101 6 0110 E 1110 7 0111 F 1111

Exemple : ( 9B15 )16 (1001 1011 0001 0101)2 + crire une fonction en langage C qui reoit une chane reprsentant lcriture dun entier en hexadcimal et qui affiche son quivalent binaire. Exemple : pour N=9A3D la fonction affiche : 1001101000111101

PARTIE B : CONVERSION DUN NOMBRE ECRIT EN BINAIRE VERS LE DECIMAL, LOCTAL, OU LHEXADCIMAL.
Dans ce qui suit on reprsente les nombres binaires par des chanes de caractres. Question 8 : passage du binaire au dcimal + Ecrire une fonction qui reoit un nombre binaire sous forme dune chane de caractres et qui retourne son quivalent, un entier en dcimal. Exemple : Si on passe la fonction la chane 10011001011 reprsentant un nombre binaire, elle retourne lentier 1227. Remarque : 1227=1*20+1*21+0*22 +1*23+0*24+0*25+1*26+1*27+0*28+0*29+1*210 Question 9 : passage du binaire loctal On applique exactement linverse du passage octal binaire vu ci dessus. On ralise des groupements de trois bits partir de la droite en compltant le dernier par des zros si ncessaire et en suite on remplace chaque groupement par son quivalent en binaire. Exemple : ( 010 111 001 110 )2 ( 2716 )8

+ Ecrire une fonction de prototype void bintooctal(char *bin), qui reoit une chane reprsentant un nombre binaire et affiche son quivalent en octal. Question 10 : passage du binaire lhexadcimal On applique exactement linverse du passage hexadcimal binaire vu ci dessus. On ralise des groupements de quatre bits partir de la droite en compltant le dernier par des zros si ncessaire et en suite on remplace chaque groupement par son quivalent en binaire. Exemple : ( 0101 1000 1110 )2 ( 58E )16 + Ecrire une fonction de prototype void bintohex(char *hex), qui reoit une chane reprsentant un nombre binaire et affiche son quivalent en hexadcimal. F I N D E L' P R E U V E