Rechercher : dans
Par :

C conversion decimal vers binaire

Dernière réponse le 9 oct 2009 à 23:51:52 frizou, le 11 oct 2005 à 17:54:28 
 Signaler ce message aux modérateurs

Salut

juste pour info que je n'ai pas trouvé sur le web avant de venir vous concerter,
il existe en C une fonction permettant de convertir un nombre decimal en binaire?
ou faut-il se "taper" le code?

merci d'avance...

Meilleures réponses pour « C conversion decimal vers binaire » dans :
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) VoirConversion format de fichier DOS UNIX / UNIX DOS Préambule Ce qu'il faut savoir Conversion DOS vers UNIX Conversion UNIX vers DOS Préambule Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce cette...
Convertir un fichier WAV, AVI, MPEG vers le format 3GP / 3GPP VoirPour convertir un fichier WAV, AVI, MPEG ou MP3 au format 3GP, il suffit d'utiliser l'un des logiciels suivants : Mobile 3GP Converter MediaCoder Super Format Factory On peut aussi utiliser un convertisseur en ligne tel que : Media...
Télécharger MTV Video Converter VoirLe programme MTV Video Converter est un convertisseur vidéo vers le format MTV acceptant les formats d'entrée suivants : AVI, MPEG, DAT, WMV, WMA, ASF, RM, RAM, RMVB, MOV, QT, VOB.
Le codage binaire VoirPrésentation du binaire Bit Poids des bits Conversions Octet KiloOctets, MégaOctets Opérations en binaire Addition binaire Multiplication binaire Présentation du binaire Vers la fin des années 30, Claude Shannon démontra qu'à l'aide...

1

crabs, le 11 oct 2005 à 19:00:13

Salut,
Y a peut-être un lib en GPL qui permet de faire ça, mais pas dans la libc standard.
A+, crabs ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

2

kilian, le 12 oct 2005 à 01:04:59

Ceci dit à implémenter, ça tient sur une petite fonction:

char *en_binaire(int nombre)
{
         int i,j;
         char *binaire=(char *)malloc(sizeof(char)*33);
         binaire[32]='\0'; //Caractère de fin de chaîne
         i=0; //Compteur de décalage de bits
         j=31;  //Emplacement dans la chaine "binaire", on part de la fin

         while(i<32)
         {
                 /* On déplace chaque bit de vers la droite i puis on regarde si
                       le premier bit après le décalage est égal à 1. Le décalage
                       permet de déplacer chaque bit à la première position 
                       au fur et à mesure de la boucle */
                 if ( (nombre >> i) & 1)
                 {
                         binaire[j]=1;
                 }
                 else{
                         binaire[j]=0;
                 }
                 i++;
                 j--; 
          }
           
           return binaire; //Penser à libérer l'allocation de binaire un jour :-)
}


Je l'ai pas testé, mais l'intention y est :-)
J'ai pris une longueur de 33 pour la chaine. Avec gcc (donc peut être à changer en fonction des compilateurs), un int fait 32 bits, j'ai fait + 1 pour le caractère de fin de chaine.

Répondre à kilian

3

lami20j, le 12 oct 2005 à 06:30:20

Bonjour,

pour s'amuser voilà une variante en Perl

sub en_binaire {
           my $binaire = unpack("B32", pack("N",shift));
           $binaire =~ s/^0+(?=\d)//; # éliminer les zéros initiaux
            return $binaire;
}

Répondre à lami20j

4

tenebres, le 22 nov 2006 à 11:36:10

Il y z cette metade aussi pour la conversion decimal => binaire sa utiliser de pointeur.

int conversion (int unsigned short Decimal)
{
int unsigned short valeur;
int tab[15];
int x=0;
int i;
int reste=;
int binaire=0;


valeur = Decimal;

while (valeur > 0)
{
reste = valeur%2 ;//calcul le reste
tab[x] = reste;
x++;
valeur = valeur/2;
}
for(i=x;i--;i>0)
{
binaire = binaire + tab[i]*10^i;
}
return binaire ;
}

Répondre à tenebres

5

Topic, le 22 nov 2006 à 18:15:30

Y'a aussi les *toi qui en troisieme parametre prennet la base
char * itoa ( int value, char * buffer, int radix );

int nombre=7;
char temp[10];
atoi(itoa(nombre,temp,2));

Répondre à Topic

6

seb, le 7 jun 2007 à 12:25:52

Message à l'intention de Tenebres il ne faut pas mettre de while mais plutot un for
car sinon tu peus faire qu'une foi ta conversion car le while risque d'etre vrai aprés.

ce programme fonctionne pour ceu que ça intéresse



int conversion (int unsigned short Decimal)
{
int unsigned short valeur;
int tab[15];
int x=0;
int i;
int reste=0;
int binaire=0;


valeur = Decimal;

for (i=0; i<8; i++)
{
reste = valeur%2 ;//calcul le reste
tab[x] = reste;
x++;
valeur = valeur/2;
}
for(i=x;i--;i>0)
{
binaire = binaire + tab[i]*10^i;
}
return binaire ;
}

Répondre à seb

8

trois_gee, le 22 mai 2008 à 18:42:49

Votre code ne marche pas de toute façon car vous faites une addition avec " binaire = binaire + tab[i]*10^i"
c'est vrai que dans les cases du tableau il y'a des nombres binaires ( 0 et 1) mais là vous calculez un nombre decimal...

Répondre à trois_gee

9

nonolenaufragé, le 29 mai 2009 à 15:39:12

Oui, mais qui a l'allure du nombre binaire qu'on cherche ^^

PS : si ça marche pas, remplace for(i=x;i--;i>0) par for(i=x;i>0;i--)
et 10^i par pow(10, i) (avec #include <math.h>) "Google est ton ami"...mouais ! c'est surtout un beau bordel de réponses désodonnées.
Par pitié ! arrêtez de croire que google a réponse à tout !!!!!

Répondre à nonolenaufragé

10

macbang, le 1 jui 2009 à 12:04:29

Je me permet de rouvrir ce post car j'ai voulu me servir de ce petit code mais une erreur survient lors de la compilation :

" error: conflicting types for "conversion" "

je passe en argument un int *p;

Répondre à macbang

11

ti108_hs, le 8 oct 2009 à 16:55:33

Voilà , tu peut trouver la solution ici => http://gabriel.braun.free.fr/CoursInfo/Codage/binaire.html

Répondre à ti108_hs

12

 miss_shaly, le 9 oct 2009 à 23:51:52

Bonsoir, j'ai besoin de l'aide pour une conversion. je dois coder en C.
Je voudrais savoir l'algorithme qui permet de convertir un nombre decimal ( nbre fini de chiffres après la virgule) de la base decimale à la base binaire.
je sais que pour convertir par exple: (54,25) en base 2
il faut convertir la partie entiere en decimal.
puis pour la partie decimale on prend la partie decimale et on multiplie par 2.
et le resultat on multiple à nouveau par 2. ainsi de suite.
je ne vois pas cmt on fait pour saisir uniquement la partie décimale en C..
quelqu'un pourrait m'aider svp?
merci

Répondre à miss_shaly
Collection CommentÇaMarche.net