Fonction transformer décimal en binaire [C]

seo610 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   102
 
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   Statut Membre Dernière intervention   102
 
idée d'optimisation?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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