Conversion double binaire vers décimal
Bonjour,
j'ai dû faire une faute de codage.
Le but de l'opération étant de convertir un double binaire vers du décimal.
Le nombre décimal est 0.02.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| int main()
{
//char base_bin[64];
char base_bin[]="0111101100010100101011100100011111100001011110101001010000111111";
int pos=strlen((const char*)base_bin)-1;
int pos2=pos+1;
double d1=0;
double d2=0;
int x=0;
int y=12;
char i='1';
cout << "strlen of pos =" <<pos+1 <<endl;
//cout << "pos start at end of string = " << pos << endl;
cout << "Calculation start at pos : " << y << endl;
while ( pos2 > y )
{
unsigned char ch = base_bin[y];
if ( ch == i) {
d1=pow(2,x);
cout << "bit = " << ch << " at pos = " << y << endl;
d2=d2+d1;
cout << "Value at this pos = " << d1 << "and d2 = " << d2 << endl;
}
x++;
y++;
}
//printf ( "Double d2 final = %.8f\n",d2);
printf ( "Double d2 final = %.2f\n",d2);
cout<<"final d2 = "<<d2<<endl;
return 0;
} |
J'ai tenu compte avec le bit de signe et l'exposant. La mantisse devrait donc être 2 et l'exposant e^-2, si j'ai juste :?
Ce code ne calcule que la mantisse pour commencer.
Et j'arrive pas à trouver ce fameux '.' qui devrait se trouver en dernière position de la mantisse ?