Rechercher : dans
Par :

Programme qui convertit un nombre binaire

Dernière réponse le 20 déc 2007 à 18:41:12 fifi, le 20 déc 2007 à 17:07:03 
 Signaler ce message aux modérateurs

Bonjour,
je voulais faire un programme qui convertit un nombre binaire donné en virgule fixe en un nombre décimal,donc j'ai essayé d'abord de déterminer la partie entière (pe) et la partie décimale (pad) mais l'ordinateur n'a pas exécuté les calculs correctement tel que pour un nombre binaire égal à 100,1 il calcule pe=100 et pad=0,09998

#include <stdio.h>
#include <math.h>
void main()
{
int i,j,pe,ped,reste;
float n,pad;
double decimal;
printf("donner un nombre binaire\t");
scanf("%f",&n);
i=0;
pe=-1;
pd=(float)0;
while(pe<i)
{
if((n-i)<1)
{
pe=(float)i;
pad=n-(float)i;
printf("%f, %d ",pad,pe);

}
else
i++;
}
i=0;
decimal=0;
while(pe>0)
{
reste=(int)pe%10;
decimal+=(double)(reste*pow(2,i));
pe=(int)pe/10;
i++;
}
j=1;
while(pad!=0)
{
pd*=(float)10;
printf("%f\t",pad);
i=0;
ped=-1;
/*ped représente la partie décimale de la partie décimale de n multiplié par 10*/
while(ped<i)
{
if((float)(pad-i)<(float)1)
{
ped=(int)i;
pad -=(float)i;
}
else
i++;
}
decimal+=(double)(ped*pow(2,-j));
j++;
}
printf("l'équivalent du nombre binaire donné est %e\t",decimal);
}

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « programme qui convertit un nombre binaire » dans :
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
[Programmation] Conventions de passage de paramètres sous x86 VoirLes conventions de passage de paramètres sous x86 Introduction Cdecl Stdcall Fastcall Register Pascal Sources de ce document et liens Lorsqu'un programme est compilé pour une architecture x86, le passage de paramètres pour...
[Programmation] Conversion RGB/HSL/CMYK... VoirIl existe plusieurs manières de spécifier les couleurs (on dit qu'il existe plusieurs espaces de couleur). En informatique, on utilise principalement RGB (rouge/vert/bleu), mais il est nettement moins intuitif que d'autres tels que HSL...
Télécharger Progitek Convertir VoirLa conception de site web commence toujours par des codes que vous éditez dans des bloc notes ou autres traitement de textes. Par la suite il faut intégrer cette source dans un navigateur pour voir le résultat. Progitek Convertir est un outil simple...
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...
Système hexadécimal VoirSystème hexadécimal Les nombres binaires étant de plus en plus longs, il a fallu introduire une nouvelle base : la base hexadécimale. La base hexadécimale consiste à compter sur une base 16, c'est pourquoi au-delà des 10 premiers chiffres on a...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...

1

Reivax962, le 20 déc 2007 à 17:52:55
  • +1

Bienvenue dans le monde merveilleux du Double, qui est incapable d'une représentation correcte et fiable de beaucoup de nombres pourtant simples... C'est comme ça que les premières versions des calculatrices Windows donnaient 100,1 - 100 = 0 !

D'ailleurs, tu ne verras jamais de type double dans un programme utilisé par des banques...

Je ne sais pas si le type decimal existe en C, mais en C# il est fiable.

Répondre à Reivax962

2

 fifi, le 20 déc 2007 à 18:41:12

Mais le problème ne réside dans la variable décimale qui est de type double mais dans la variable pad qui est de type float

Répondre à fifi
Collection CommentÇaMarche.net