Bitmaske erstellen



  • Nabend,

    ich würde gerne eine Maske dieser Art als integer erstellen (nicht std::bitset oder ähnliches) und stehe grad etwas auf dem Schlauch, vor allem für das (0x1)y fällt mir nichts sinnvolles ein:

    (0x1)y0z

    x, y und z sind ints und geben die Anzahl der jeweiligen Stellen an. Fällt jemandem spontan was ein?


  • Mod

    Damit wir uns richtig verstehen: x = 2, y = 3, z = 4 würde in deiner Schreibweise 0010010010000 bedeuten?



  • Jap. Ich krieg das einfach nicht richtig vexort/vershiftet/... 😕


  • Mod

    Spontan würde ich ja sagen:

    for (int i = 0; i < y; ++i)
    {
      bitmaske <<= x;
      bitmaske += 1;
    }
    bitmaske <<= z;
    


  • for (int i = 0; i < y; ++i)
    {
      bitmaske <<= x+1;
      bitmaske += 1;
    }
    bitmaske <<= z;
    

    Vielen Dank, so gehts (x+1 statt x, das += 1 in der Zeile danach überschreibt sonst einfach eine der reingeshifteten Nullen).
    Das war jetzt doch einfacher als erwartet, da hab ich wohl nen Knoten im Kopf gehabt.


Log in to reply