Convertisseur decimal 2 binair

cs_cosmix Messages postés 3 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 novembre 2004 - 18 nov. 2004 à 16:45
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 18 nov. 2004 à 21:40
Voila je doi creer un programme qui converti un decimal 16 bits en binaire dans un tableau a 16 entrées .
Voici mon code (qui ne fonctionne pas lol )
KKun pour m aider ???

#include <stdio.h>

int main(void)
{ int dual[16] ;
int i,d,c;

printf("Geben sie eine Decimalzahl ein :");
scanf("%d",&d);
printf("%d\n\n",d);
for(i = 0 ; i >= 16; i++)
c = d%2 ;
dual[i] = c;

printf("%d",dual);

return 0;
}

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 nov. 2004 à 17:16
for(i = 0 ; i < 16; i++)
{
dual[i] = d%2;
d = d/2;
}

pour l'affichage : boucle inversée (pour commencer par MSB
for(i = 15 ; i>=0; i++)
printf("%d", dual[i]";
0
cs_cosmix Messages postés 3 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 18:17
dsl marche toujours pas :s
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 nov. 2004 à 18:26
oupps, erreur dans la boucle d'affichage, i-- au lieu de i++

#include <stdio.h>

int main(void)
{
int dual[16] ;
int i,d,c;

printf("Geben sie eine Decimalzahl ein :");
scanf("%d",&d);
printf("%d\n\n",d);
for(i = 0 ; i < 16; i++)
{
dual[i] = d%2;
d = d/2;
}

//pour l'affichage : boucle inversée (pour commencer par MSB
for(i = 15 ; i>=0; i--)
printf("%d", dual[i]); 
return 0;
}

0
cs_cosmix Messages postés 3 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 18:35
Comment je peu voir si le decimal est en 16 bits ??
0

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

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 nov. 2004 à 18:36
s'il est inférieur ou égal à 65535 (2^16-1), il tiendra sur 16 bits
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
18 nov. 2004 à 21:40
if (sizeof (ton_entier) == sizeof (short))
printf ("mon entier tiens sur 16 bits youpi!!");

pour récupérer tes bits, la division est trop lourde, tu peux récuérer un bit par cycle machine:
ici je stocke la valeur d'un bit dans un char, tu auras un bit par octet et tu afficheras une chaine de caractere, a toi d'adapter a tes besoins:

char Tab [sizeof (ma_var)];
for (unsigned i = sizeof (ma_var) - 1; i != 0; --i)
Tab [i] = (ma_var & (1 << i)? '1' : '0');

en francais: si ma_var auquel j'applique un masque qui ne contienne qu'un bit a 1 (celui qui correspond a l'indice de mon tableau) vaut un je stocke le caractere un sinon je stocke le caractères zero.

appliquer le masque (si tu connaissais tu aurais fait je suppose donc je texplique, au cas ou tu connaitrais effectivement pas)
ex:

00100100100
11100001100

le & sur ces 2 nombres te donnent:
00100000100

autrement dit par un & si mes deux bits valent 1 ca prend 1 sinon ca prend 0.
voila
0
Rejoignez-nous