Bonjour,
J'ai un probl�me, car je voudrais incr�menter du binaire.
Je ne sais pas comment faire.
Un petit exemple :
0000
0001
0010
0011
0100
0101
0110
0111
1000
Si quelqu'un pourrait m'aider, s'il vous pla�t.
Bonjour,
J'ai un probl�me, car je voudrais incr�menter du binaire.
Je ne sais pas comment faire.
Un petit exemple :
0000
0001
0010
0011
0100
0101
0110
0111
1000
Si quelqu'un pourrait m'aider, s'il vous pla�t.
Bonjour,
il manque quelques pr�cisions � ta question.
Est-ce que, par exemple, "0110" est un nombre ou une chaine de caract�res repr�sentant un nombre ? Utilises-tu un type "standard" pour stocker tes valeurs (int, short double, etc.) ? Peux-tu avoir des nombres binaires n�gatifs ?
Utilises-tu d�j� un type binaire que tu aurais impl�menter ? Par exemple:
Quoi qu'il en soit, le processeur que tu utilises traite d�j� les donn�es en binaire et ce que tu affiches ensuite - via std::cout ou printf() par exemple - n'est qu'une repr�sentation, parmi de multiples, d'une valeur interne. In fine, +1 binaire, c'est aussi +1 en d�cimal, en hexa, en octal, etc.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 Bin_t var = 110; // 6 en base 10 var++; // 111 base 2 var += 10; // 111(2) + 10(2) = 1001(2) = 9(10)
Explique-nous quels sont les types que tu utilises et ce que tu souhaites faire exactement. Met un bout de code (m�me si �a ne compile pas) ou un algorithme d�crivant ce que tu cherches � faire.
Incr�menter est une op�ration qui ne d�pend pas de la base utilis�e. La base est avant tout une caract�ristique de l'affichage, pas d'un nombre (du moins pour les entiers, pour les flottants, elle joue sur le mode d'arrondi).
Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.
Je r�alise un programme d�adressage IP.
Voici mes �tapes :
Les nombres sont saisie en cha�ne de caract�res avec un point entre les nombres.
Premier Menu :
- choix 1 (correspond � saisir une adresse ip et un masque de sous-r�seau) ou 2 (correspond � saisir une adresse ip et un cidr) le cidr est un nombre en int.
Deuxi�me Menu :
ensuite pour cr�er son adressage l'utilisateur saisir le nombre de sous-r�seaux en choix 1 ou le nombre de machines en choix 2.
Je n'ai aucun nombre n�gatif ils sont toujours positif.
J'utilise le type standard pour stocker mes valeurs.
Je n'ai jamais utilis� le type binaire.
Bonjour,
D�sol� pour cette r�ponse tardive, j'ai d� pas mal m�dit� sur ce probl�me.
J'ai faire une simulation � c�t� mais �a ne marche pas.
Voici mon code :
Si �a aide quelqu'un � comprendre.
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 using namespace std; #include <iostream> int main() { string tab[4]={"0","0","0","0"}; int j,i; for(j=3;j>-1;j--) { cout<<"Indice tableau :"<<j<<endl; for(i=0;i<256;i++) { cout<<"Indice incrementation :"<<i<<endl; if(tab[j]=="0"&&tab[j-1]=="0") { tab[j]="1"; cout<<tab[j]<<endl; } if(tab[j]=="1"&&tab[j-1]=="0") { tab[j]="0"; tab[j-1]="1"; cout<<tab[j]<<endl; cout<<tab[j-1]<<endl; } if(tab[j]=="1"&&tab[j-1]=="1") { tab[j]="0"; tab[j-1]="0"; tab[j-2]="1"; cout<<tab[j]<<endl; cout<<tab[j-1]<<endl; cout<<tab[j-2]<<endl; } } cout<<tab[j]<<endl; } system("pause"); }
J'ai effectu� des modifications sur mon code en utilisant un tableau multidimensionnel, se sera d�j� un peu plus simple.
voir le code ci-dessous :
Mon code ne fonctionne pas.
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
62
63 using namespace std; #include <iostream> int main() { string tab[4][4]; int k,m,i,j; for(k=0;k<2;k++) { for(m=0;m<4;m++) { if(tab[k][m]=="") { tab[k][m]="0";//initialisation du taleau à 0 } cout<<"le ligne"<<k<<endl; cout<<"colonne"<<m<<endl; cout<<tab[k][m]<<endl;; } } for(j=3;j>-1;j--) { cout<<"colonne incremente :"<<j<<endl; for(i=0;i<4;i++) { cout<<"ligne incremente :"<<i<<endl; if(tab[i][j]=="0"&&tab[i][j-1]=="0")//si on trouve un 0 au premier et au deuxième indice. { tab[i][j]="1";//alors on met un 1 cout<<tab[i][j]<<endl; tab[i+1][j]=tab[i][j];//On copie la valeur dans la ligne suivante i++;//on passe à la ligne suivante } if(tab[i][j]=="1"&&tab[i][j-1]=="0")//si on trouve un 1 au premier et un 0 au deuxième indice. { tab[i][j]="0";//on mets un 0 au premier indice tab[i][j-1]="1";//ensuite on mets un 1 à l'indice suivante. cout<<tab[i][j]<<endl; cout<<tab[i][j-1]<<endl; tab[i+1][j]=tab[i][j];//On copie les valeurs dans la ligne suivante tab[i+1][j-1]=tab[i][j-1]; i++; } if(tab[i][j]=="1"&&tab[i][j-1]=="1")//si on trouve un 1 au premier et un 1 au deuxième indice. { tab[i][j]="0";//on mets un 0 au premier indice tab[i][j-1]="0";//on mets un 0 au deuxième indice tab[i][j-2]="1";//ensuite on mets un 1 à l'indice suivante. cout<<tab[i][j]<<endl; cout<<tab[i][j-1]<<endl; cout<<tab[i][j-2]<<endl; tab[i+1][j]=tab[i][j]; tab[i+1][j-1]=tab[i][j-1]; tab[i+1][j-2]=tab[i][j-2]; i++; } } cout<<tab[i][j]<<endl; } system("pause"); }
Si je lis bien ton code, il me semble que tu r�inventes la calculatrice binaire, alors que si tu utilises des types num�riques et non des cha�nes de caract�res tu te simplifieras la vie.
Une adresse IP (v4) est �crite sur 32 bits, tu peux donc la repr�senter avec un type unsigned int sur la plupart des compilateurs ou avec un tableau de 4 unsigned char. Tu pourras alors utiliser les op�rateurs habituels pour effectuer des op�rations arithm�tiques ou binaires. Tu peux �galement utiliser un bitset<32>.
Pour visualiser tes nombres tu peux proc�der en effectuant une boucle de d�calages :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 void disp_bin(unsigned char nb){ for(unsigned short i=0; i<8; i++){ if((nb << i & 128) != 0) cout<< "1"; else cout<<"0"; } cout<<"\n"; }
Partager