Conversion binaire

barry -  
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'aimerais que vous m'écrivez un algorithme qui convertit un nombre decimal en binaire
A voir également:

3 réponses

nagaD.scar Messages postés 4272 Date d'inscription   Statut Membre Dernière intervention   252
 
Salut,

Un petit tour sur la charte devrait t'aider a voir qu'on ne fait pas les exercices des gens mais qu'on aide les personnes qui font l effort d au moins essayer et qui bloquent.

Mais vu que je suis sympas, si tu fais mon exposé sur les différences de sexualité entre les casoars et les ornithorynque je veux bien t ecrire l algo.

naga
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
Les ornithorynques, c'est comme les castors mais mélangés à des canards.
0
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   25
 
Tu es dans le forum C. Or tu n'es pas sans savoir qu'en C, comme dans la laaarge majorité des languages (en fait je n'en connais aucun pour lequel ça ne soit pas le cas même s'il doit bien en exister :p), la base décimale/binaire n'est qu'une représentation, et qu'en fait tous les nombres sont encodés en binaire.

Le C99 standard ne te permet d'écrire les nombres qu'en décimal (pas de préfixe), octal (préfixé par un 0, raison pour laquelle les nombres décimals en C ne doivent jamais commencer par des 0 inutiles) et hexadécimal (préfixé par 0x). Un certain nombre de compilateurs permettent aussi d'écrire des nombres en binaire (préfixé par 0b).

Pour ce qui est de l'affichage avec printf, tout dépend du format que tu passes à printf.


Par conséquent, "un algorithme qui convertit un nombre décimal en binaire" n'a pas de sens, puisque tu peux déjà représenter les nombres aussi bien en décimal qu'en binaire...

La curiosité est une excellente qualité !
0
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
Essaye quelque chose du genre ( vite bricolé)
#include <stdlib.h>
#include <stdio.h>

int main( int argc, char*argv[])
{

  long long unsigned int mon_entier = 23, q;
  char *res, *ptr;
  res  = malloc(sizeof(mon_entier) +1);

  if (res)
    for (ptr = res ; ptr < res + sizeof(mon_entier); ptr++)
      *ptr= '0';
  
  *ptr = 0;
  
  q = mon_entier;
  ptr = res + sizeof(mon_entier) - 1 ;
  while ( q )
    {
      printf("q = %d\n", q);
      *ptr += (q & 1);
      ptr--;
      q = q >> 1;
    }
  
  printf("%16s\n" , res);
  return EXIT_SUCCESS;
}


A simplifier et améliorer !

Gates gave ^W  sold  you the windows.
GNU gave us the whole house.(Alexandrin)
0
paly2 Messages postés 254 Date d'inscription   Statut Membre Dernière intervention   25
 
Ce n'est pas une conversion d'un nombre décimal en binaire (ce qui n'a pas de sens, comme je le disais), c'est une conversion d'un nombre en chaîne de caractères littérale dans laquelle le nombre est représenté en base binaire.

Cependant il est vrai qu'il n'existe en C aucune fonction standard pour faire ce que fait ton code, seulement la fonction non-standard itoa(), c'est dommage, ça pourrait parfois être utile...
0