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:
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 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
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;
                }
        }
 
}
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
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';
        }*/
}
Par exemple pour convertir 9 en binaire j'obtient:
en 32 bits: 00000000000000000000000000001111
en 16 bits: 0000000000001001
en 8 bits: 00001001

Petit Sceen d'ensemble:Nom : Sans titre 1.jpg
Affichages : 1751
Taille : 202,7 Ko

Merci d'avance pour votre aide précieuse.