Bonjour à tous!
Je viens de découvrir se Forum par le biais d'un camarade qui a sollicité votre aide et a obtenu une réponse rapide et très pertinente!
Je vous explique: Je code une calculatrice avec le Lycée.
J'en suis arrivé a convertir du décimal en binaire. La conversion marche parfaitement lorsque je passe du décimal 32 bits au Binaire 16 ou 8 bits.
Par contre lorsque j'essaye de passer du décimal 32 bits au binaire 32 bits j'ai des valeurs fausses..
Précisions:
-Variable bits initialisée a 32.
Voila le code de ma fonction de conversion Décimal vers Binaire:
Voila le code de ma ComboBox pour choisir les bits:
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 void DecVersBin() { int a=(int)Form1->Edit1->Text.ToDouble(); int i, masque; Form1->Edit1->Clear(); for(i=0;i<bits;i++) { if(bits==32) { masque=0x80000000; } if(bits==16) { masque=0x8000; } if(bits==8) { masque=0x80; } if((a&(masque>>i))==0) { Form1->Edit1->Text=Form1->Edit1->Text+'0'; } else { Form1->Edit1->Text=Form1->Edit1->Text+'1'; } } }
Voila le code de ma ComboBox pour choisir Décimal / Hexa / Bin:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 void __fastcall TForm1::ComboBox3Change(TObject *Sender) //OnChange de la ComboBox 32/16/8 bits { if(Form1->ComboBox3->Text=="32 bits") { bits=32; } if(Form1->ComboBox3->Text=="16 bits") { bits=16; } if(Form1->ComboBox3->Text=="8 bits") { bits=8; } if (ComboBox2->Text=="Héxadécimal" && ComboBox3->Text=="32 bits") { if(bits==16) { Form1->Edit1->Text="0000"+Form1->Edit1->Text.SubString(1,4); bits=32; } else if(bits==8) { Form1->Edit1->Text="000000"+Form1->Edit1->Text.SubString(1,2); bits=32; } } if (ComboBox2->Text=="Héxadécimal" && ComboBox3->Text=="16 bits") { if(bits==32) { Form1->Edit1->Text=Form1->Edit1->Text.SubString(5,4); bits=16; } else if(bits==8) { Form1->Edit1->Text="00"+Form1->Edit1->Text.SubString(1,2); bits=16; } } if (ComboBox2->Text=="Héxadécimal" && ComboBox3->Text=="8 bits") { if(bits==32) { Form1->Edit1->Text=Form1->Edit1->Text.SubString(7,2); bits=8; } else if(bits==16) { Form1->Edit1->Text=Form1->Edit1->Text.SubString(3,2); bits=8; } } }
Par exemple pour convertir 9 en binaire j'obtient:
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
36
37
38
39 void __fastcall TForm1::ComboBox2Change(TObject *Sender) //OnChange de la ComboBox Déc/Hex { if (ComboBox2->Text=="Décimal" && base=='H') { HexVersDec(); base='D'; } /*if (ComboBox2->Text=="Décimal" && base=='B') { BinVersDec(); base='D'; }*/ if (ComboBox2->Text=="Héxadécimal" && base=='D') { DecVersHex(); base='H'; } /*if (ComboBox2->Text=="Héxadécimal" && base=='B') { BinVersHex(); base='H'; }*/ if (ComboBox2->Text=="Binaire" && base=='D') { DecVersBin(); base='B'; } /*if (ComboBox2->Text=="Binaire" && base=='H') { HexVersBin(); base='B'; }*/ }
en 32 bits: 00000000000000000000000000001111
en 16 bits: 0000000000001001
en 8 bits: 00001001
Petit Sceen d'ensemble:
Merci d'avance pour votre aide précieuse.
Partager