IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Incr�menter en binaire.


Sujet :

C++/CLI

  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par d�faut Incr�menter en binaire.
    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.

  2. #2
    R�dacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur s�curit� informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Chercheur s�curit� informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par d�faut
    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:

    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)
    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.

    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.

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    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.

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par d�faut
    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.

    Citation Envoy� par Neitsa Voir le message
    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:

    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)
    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.

    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.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par d�faut
    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 :

    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");
    }
    Si �a aide quelqu'un � comprendre.

  6. #6
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Consultant informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Par d�faut
    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 :

    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");
    }
    Mon code ne fonctionne pas.

  7. #7
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Juillet 2011
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Par d�faut
    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";
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [C#] Incr�menter un chiffre binaire
    Par condor666 dans le forum D�buter
    R�ponses: 2
    Dernier message: 24/07/2013, 11h54
  2. R�ponses: 7
    Dernier message: 29/05/2012, 16h16
  3. Incr�menter de 1 � 8 en binaire
    Par somaa dans le forum G�n�ral Java
    R�ponses: 2
    Dernier message: 12/06/2010, 17h37
  4. Post incr�mentation?
    Par Defrag dans le forum C
    R�ponses: 4
    Dernier message: 08/10/2002, 10h36
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    R�ponses: 4
    Dernier message: 14/06/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo