Conversion binaire

Fermé
barry - 28 juin 2016 à 13:13
paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 - 1 juil. 2016 à 17:55
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 samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
28 juin 2016 à 14:06
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 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 226
1 juil. 2016 à 12:59
Les ornithorynques, c'est comme les castors mais mélangés à des canards.
0
paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 25
Modifié par paly2 le 30/06/2016 à 21:50
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 dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 1/07/2016 à 16:40
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 vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 25
Modifié par paly2 le 1/07/2016 à 17:55
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