7 votes

Comment mettre en œuvre un bitset dynamique dans mon code spécifique

Je utilise bitset et pour améliorer les performances de mon code je veux le changer en bitset dynamique, mais après avoir lu quelques messages à ce sujet, je ne sais toujours pas comment définir mon code.

Alors j'ai joint mon code et j'aimerais savoir si l'un d'entre vous pourrait m'aider en me donnant des idées sur ce que je devrais modifier et comment.

Merci d'avance :)

// Programme qui convertit un nombre de décimal en binaire et montre les positions
// où le bit du nombre binaire contient 1

#include 
#include 
#include 
#include 

using namespace std;

int main()
{

    unsigned long long int dec;
    bitset<5000> binaryNumber;
    bitset<5000> mask;
    mask = 0x1;

    cout << "Écrivez un nombre en décimal : ";
    cin >> dec;

    // Conversion de décimal à binaire
    int x;
    for (x = 0; x < binaryNumber.size(); x++)
    {
        binaryNumber[x] = dec % 2;
        dec = dec / 2;
    }

    cout << "Le nombre " << dec << " en binaire est : ";
    for (x = (binaryNumber.size() - 1); x >= 0; x--)
    {
        cout << binaryNumber[x];
    }
    cout << endl;

    // Stockage des positions avec des valeurs 1
    vector valueTrue;
    for (int r = 0; r < binaryNumber.size(); r++) //
    {
        if (binaryNumber.test(r) & mask.test(r)) // si les deux sont des bit "1"
                                                 // nous stockons dans le vecteur valueTrue
        {
            valueTrue.push_back(r);
        }
        mask = mask << 1;
    }

    int z;
    cout << "Les bits 1 sont à la position : ";
    for (z = 0; z < valueTrue.size(); z++)
    {
        cout << valueTrue.at(z) << " ";
    }
    cout << endl;

    system("pause");
    return 0;
}

-1voto

varagrawal Points 530

Vous pouvez le faire sans utiliser la bibliothèque boost.

Vous pouvez assigner dynamiquement le bitset. Donc au lieu de

for(x=0;x

``

Vous pouvez simplement faire :

 binaryNumber = dec;  

Oui, cela fonctionne !!

Ensuite, plutôt que d'utiliser un vecteur séparé pour stocker les positions des 1, vous pouvez faire quelque chose comme ceci :

for(int i=0;i

`

J'espère que cela vous aidera.

` ``

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X