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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?