Zugriff auf Einzelbits einer Variablen



  • Hallo zusammen,

    ich versuche eine Versuche einen Vektor (vom Typ double, dürfte hier nicht weiter interessant sein) nach einem bestimmten algorithmischen Verfahren umzusortieren. Dafür brauche ich die Möglichkeit, direkt auf einzelne Bits der Indizes zuzugreifen.

    Der Index eines Arrays ist ja standardmäßig vom Typ int. Ich such also nach einer Möglichkeit, für einen beliebigen Integer den Status der einzelnen Bits abzufragen und zu manipulieren.

    Wie kann ich dies am elegantesten tun?



  • Mir ist irgendwie nicht ganz klar was du willst. Du redest von Vektor, Array, Indice vom Typ Int. Was meinst du denn eigentlich genau? Hast du ein std::vector< double >, oder ein double-Array? Wieso willst du die Indice manipulieren, für ein umsortieren reicht es doch Elemente auszutauschen...
    Werd mal etwas klarer!



  • Ich habe einen double-Array.

    Ich muss auf die Indizes zugreifen, weil die Sortierung nicht nach Wertigkeit der Elemente sondern der Indizes selber erfolgen soll. Der Algorithmus sieht vor, dass jedes Element mit demjenigen Element vertauscht werden soll, deren gespiegelte Bitsquenz identisch ist.

    Beispiel (für einen 4-Bit-Index):
    x[0] = 5 (0 -> 0000) gespiegelter binärer Index: 0000 ist 0 => x[0] wird nicht vertauscht

    x[5] = 8 (5 -> 0101) gespiegelter binärer Index: 1010 ist 10 => x[5] wird mit x[10] vertauscht



  • Ist letztlich aber auch egal. Mir ist schon geholfen, wenn ich auf möglichst einfachem Wege die Einzelbits einer int-Variable abfragen kann.

    Klar, ich kann das prinzipiell mit dem Binär-Und-Operator (&) für jedes Bit machen (z.B. rechtes Bit 7 & 1 = 1 -> gesetzt), das erscheint mir aber einfach recht umständlich. Das geht doch bestimmt irgendwie... naja, "eleganter".



  • Guck Dir mal das std::bitset an.



  • Auf dieser Seite findest du ein Beispiel wie du das machen kannst.
    http://graphics.stanford.edu/~seander/bithacks.html


Anmelden zum Antworten