Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comptage en binaire

    24 mars 2018 à 22:38:30


    Bonjour,
    Je voudrai créer un algorithme qui me permet de compter en binaire. Voici ce que je voudrai réaliser :
    0001 = Le nombre est bloquer, on le modifier pour qu'il devienne zero et remplit la valeur inférieur.
    0010 = Il reste un zéro, on le remplit donc.
    0011 = On est à nouveau bloquer, on réinitialise tout et ensuite, remplit la valeur inférieur.
    0100 = On voit deux zéros, on remplit celui le plus à droite.
    0101 = Le problème vient d'ici, comment lui faire comprendre qu'il doit ensuite remplir la valeur d'avant de la sorte : 0110.

    Je n'y arrive vraiment pas; ça fait des heures que je suis dessus.
    Merci de votre réponse.
    • Partager sur Facebook
    • Partager sur Twitter
      24 mars 2018 à 23:39:37

      Si tu as 1 et que tu ajoutes 1 ça fait 0 et tu retiens 1

      au rang suivant si tu as 0 tu ajoutes la retenue ce qui fait 1 et c'est fini,  si tu as 1 tu ajoute sla retenue ça fait donc 0 et tu retient 1 et tu continus.

      C'est le principe d'une addition comme on les append à l'école.

      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2018 à 0:15:57

        Salut,

        Créer un algo pour compter en binaire ? l'opérateur ++ fait ça non ? Une valeur en mémoire est en binaire, pourquoi faire un algo pour ce qui se fait tout seul ?

        int toto = 0;
        
        toto++; //b#1
        toto++; //b#10
        toto++; //b#11
        toto++; //b#100
        toto++; //b#101
        toto++; //b#110
        
        etc.

        Bon courage.

        • Partager sur Facebook
        • Partager sur Twitter

        Bonhomme !! | Jeu de plateforme : Prototype.

          25 mars 2018 à 0:54:22

          BIzarre
          

          -
          Edité par FrançoisDemaret 7 août 2018 à 14:29:01

          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2018 à 3:42:26

            Salut,

            i>=0 dans la boucle L29, [i-1] en index L39 et L43... C[-1] donne quoi ?

            Il est censé faire quoi ton programme ?

            • Partager sur Facebook
            • Partager sur Twitter

            Bonhomme !! | Jeu de plateforme : Prototype.

              25 mars 2018 à 10:02:23

              J'ai enlevé graine dans mon code elle sert à rien. Donc, le but de mon programme est additionner la valeur 000...00001 avec 000...00000, ici 10 fois. Ma valeur après une addition est conservée dans mon tableau C, que je réadditionne avec 000...00001 ce qui va me donner 000...00010, puis ainsi de suite 000...00011.

              Le but ensuite de mon programme va être d'ensuite testé pour chaque valeur trouvée, donc avec toutes les possibilités de valeurs binaire, de décrypter une image, mais ici ce n'est pas le problème :) 

              -
              Edité par FrançoisDemaret 25 mars 2018 à 10:04:02

              • Partager sur Facebook
              • Partager sur Twitter
                25 mars 2018 à 12:32:55

                for(i = nb_bits-1; i >= 0; i-- )

                i >= 0 pour un unsigned int ça ne te choques pas ! 

                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2018 à 14:03:51

                  Re,

                  Je ne pige pas pourquoi tu ne veux pas simplement faire un incrément sur une variable d'un type de base ? Tu es en train de t'embêter à coder du comptage alors que c'est ce que font les ordinateurs depuis la nuit des  temps.

                  Après, si tu tiens vraiment à coller les bits dans un tableau (mais pourquoi ?), bin tu fais une fonction qui extrait les bits d'une variable dans une table.

                  int main(void)
                  {
                      bool tabValue[sizeof(int)*CHAR_BIT] = {false};
                  
                      for (int i =0; i<10; i++)
                      {
                          binToTab(i, tabValue);
                  
                          for (int j = sizeof(tabValue)-1; j>=0; j--)
                              printf("%d", tabValue[j]);
                          printf("\n");
                      }
                  
                      return 0;
                  }
                  
                  void binToTab(int value, bool *tab)
                  {
                      for(int i=0; i<(sizeof(value)*CHAR_BIT); i++)
                      {
                          tab[i] = (value>>i) & 1;
                      }
                  }

                  M'enfin, comme on ne sait pas trop ce que tu veux en faire...

                  -
                  Edité par drx 25 mars 2018 à 14:07:04

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Bonhomme !! | Jeu de plateforme : Prototype.

                  Comptage en binaire

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown