Fonction transformer décimal en binaire [C]

Fermé
seo610 Messages postés 596 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 - 25 févr. 2011 à 16:33
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 févr. 2011 à 10:17
Bonjour,
je veux faire une fonction qui transformerais un nombre décimal ex:97 en binaire, mais que chaque paire du nombre binaire ex: 01100001 serait stoker dans un tableau ex: int binaire[4];
binaire[0]=01;
binaire[1]=10;
binaire[2]=00;
binaire[3]=01;

ce serait des nombres de 0 à 128, donc des octets.

merci.
A voir également:

1 réponse

seo610 Messages postés 596 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 102
26 févr. 2011 à 04:27
bon, trouvé tout seul :
#include <stdio.h>

int main()
{
int i,a,b[8]={0,0,0,0,0,0,0,0};
puts("Entrez un nombre [0,256[ : ");
scanf("%d",&a);
getchar();
i=a;
b[0]=a/128;
if(b[0]==1){a=a-128;}
b[1]=a/64;
if(b[1]==1){a=a-64;}
b[2]=a/32;
if(b[2]==1){a=a-32;}
b[3]=a/16;
if(b[3]==1){a=a-16;}
b[4]=a/8;
if(b[4]==1){a=a-8;}
b[5]=a/4;
if(b[5]==1){a=a-4;}
b[6]=a/2;
if(b[6]==1){a=a-2;}
b[7]=a/1;

printf("\n\na = %d en decimale et %d%d%d%d%d%d%d%d en binaire.\n",i,b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]);
getch();
}
0
seo610 Messages postés 596 Date d'inscription mardi 9 février 2010 Statut Membre Dernière intervention 30 juin 2015 102
26 févr. 2011 à 04:27
idée d'optimisation?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
26 févr. 2011 à 10:17
Effectivement, avant d'optimiser, il faudrait automatiser ton code. Un bon algorithme doit marcher pour tous les cas.
Pour la conversion en binaire, un algorithme simple et efficace est la méthode de la division successive. Le principe consiste à diviser le nombre en base 10 par 2 et à récupérer le reste (modulo). Et on continue, on divise le nouveau diviseur par 2 et on récupère reste. Les restes sont à mettre dans ta variable b.
Ainsi, tu auras ton nombre binaire.
Et plutôt que d'utiliser int b[8], utilise plutôt char b[9]. Non seulement ça prend moins de place, mais en plus tu pourras afficher le nombre simplement par : printf("s",b);
Cdlt,
0