Convertion

Utilisateur anonyme - 15 sept. 2005 à 17:03
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 15 sept. 2005 à 20:31
bonjour a tous,

Je suis nouveau ici et pour me presenter je suis etudiant en bts informatique.

Je post cette petite question car je dois creer realiser un programme en language C permettant la convertion d'un nombre hexadecimal (sur 1 octet) en binaire et un nombre decimal en binaire ( toujours sur 1 octet) mais cependant je ne vois pas par ou commencer ni comment faire de maniere pas trop compliquer....
Si quelqu'un pouvez me donner quelque conseil je vous en remercie d'avance.

merci.

@+ raf

12 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
15 sept. 2005 à 17:08
Si tu recherches sur le site tu verras de nombreux exemples traitant de ce sujet.

@+
Arnotic,
Admin CS, MVP Visual C++
0
Utilisateur anonyme
15 sept. 2005 à 17:11
Merci arnotic mais j'ai deja un peu regardé mais le probleme est que les fonction utilisé on ne l'ai a pas vu en cours...

@+
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
15 sept. 2005 à 17:12
Si tu te limites à ce que tes profs d'aprennent tu n'iras jamais loin !

@+
Arnotic,
Admin CS, MVP Visual C++
0
Utilisateur anonyme
15 sept. 2005 à 17:13
oui c sur mais je n'arrive pas vraiment a comprendre les fonctions utilisé ... sniff


mais encore merci arnotic


@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
15 sept. 2005 à 17:49
Pour ma part je pense que tes profs veulent te faire faire ca a la dur, sans utiliser des fonctions deja concue a cet effet.

Je vais t'aider un peu :

Si tu travailles sur 1 octet, tu es donc sur 8 bits, soit 8 digits.
Tu pourras donc coder des nombres allant jusqu'a :
- FFFFFFFF en hexa
- 11111111 en binaire
- 99999999 en décimal

Tu vas donc organiser ton travail autour de ca.

Pour commencer ton programme tu peux deja faire un début qui demande a l'utilisateur de saisir un nombre en décimal.
Tu prend ce nombre et tu le convertie en binaire (la c'est des maths)
Tu affiches le résultat.

Ce cas la est le plus facile a traiter je pense.

Exemple :
Si le gars saisie 2.
Tu calcules et tu trouves que 2 en décimal ca fait 10 en binaire.
Tu lui affiches donc : 00000010

J'ai completer avec des zéros car tu es sous 8 bits (1 octet)

Voila de quoi te laisser commencer et avancé.
Si tu arrives a faire ca, tu n'auras aucun probleme pour la suite.

N'hésites pas a demander si tu bloques.
En tous cas je viens de te passer le raisonement de base a adopté.

Bonne chance et bon courage.
0
Utilisateur anonyme
15 sept. 2005 à 17:54
Merci Deathcrash,

je vais essayer mais le probleme reste au niveau maths je vois qu'il faut faire des divisions et utiliser des modulo mais je pense que je dois effecter "n" divisions en fonction du nbre taper par l'utilisateur donc sa en fait un paquet....


Rafou.
0
Utilisateur anonyme
15 sept. 2005 à 17:59
Excuse moi deathcrash mais lorsque j'effectue mais division es ce que je peux stocker mes valeurs quelque par??
car tous les programmes enfin les codes sources present sur ce site integre en parti la notion de tableau d'apres ce que je vois mais je ne suis pas familiariser avec....

Merci

Rafou.
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
15 sept. 2005 à 18:09
8 bit = 1 octect = 0x00 à 0xFF = 0 à 255

0xFFFFFFFF est 32 bit (4 octets)

@+
Arnotic,
Admin CS,
Développeur chez Néos SDI,
MVP Visual C++
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 18:24
Décimal-> Binaire: tu peux aussi utiliser un masque.
Exemple: je rentre une valeur comprise entre 0 et 255.
De toute façon, ton nombre est codé en binaire dans la machine: ce serait bête de calculer la conversion... Donc, tu va lire chaque bit de ton nombre en faisant un ET logique entre celui-ci et ton masque de la forme 10000000 (pour récupérer le bit de poids fort) et tu vas pouvoir l'afficher. Ensuite, tu change de masque...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Utilisateur anonyme
15 sept. 2005 à 19:27
Merci pour tous vos conseils je vous remercie je v tester tous sa et je vous tiendrai au courant si j'ai des probleme ou pas... et une autre petite question si je veux faire hexa => binaire es ce que c la meme maniere?


Rafou.
0
Utilisateur anonyme
15 sept. 2005 à 20:09
C'est encor moi je crois que je vais passé pour un nul mais je débute en programmation et la avec toute les aide que j'ai eu jsuis parti pour faire des divisions mais en fait je ne vois pas comment faire "une boucle" pour repeter la division "n" fois et stocker les valeurs quelque part en fait.

excusez moi encore pour tout ce derangement.

merci de votre comprehension


Rafou.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
15 sept. 2005 à 20:31
Comment ferais-tu sur papier? Et bah là, c'est pareil...sauf qu'il faut le coder :)
Prenons un exemple simple: écrire 5 en binaire:
5/2 = 2, reste 1
2/2 = 1, reste 0
1/2 = 0, reste 1
[STOP]

Soit Q(i) (resp. R(i)) le quotient (resp. le reste) de la division par 2 au niveau i. On a:
R(i+1)/2 = Q(i), reste R(i).

Quand Q(n) vaut 0, on arrête et on lit le nombre suivant:
Q(n), R(n), R(n-1),...,R(1),R(0) qui, dans notre cas donne: 0101 qui vaut bien 5

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous