Convertisseur decimal 2 binair

Signaler
Messages postés
3
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
18 novembre 2004
-
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
-
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

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
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]";
Messages postés
3
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
18 novembre 2004

dsl marche toujours pas :s
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
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;
}

Messages postés
3
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
18 novembre 2004

Comment je peu voir si le decimal est en 16 bits ??
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
s'il est inférieur ou égal à 65535 (2^16-1), il tiendra sur 16 bits
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
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