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:
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
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; }
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 ?
Partager