Bitshifting



  • Hi,

    ich möchte zwei Werte, einen 13 Bit (matchoffset) und einen 3 Bit (matchsize) Wert in einer dritten 2 Byte Variable (codeword) speichern. Meine bisherige Überlegung ist folgende:

    codeword = matchoffset << 3;
    codeword |= matchsize;
    

    Ist das korrekt?

    Gruß,
    Neo



  • Kommt das korrekte raus? Versuchs doch einfach.



  • Wie wär's mit einer Bit-struct:

    struct
    {
       int matchoffset : 13;
       int matchsize   :  3;
    } match;
    

    Dann macht der Compiler das Shiften für Dich im Hintergrund. 😉
    Könnte allerdings schief gehen, wenn da noch Padding-Bytes eingefügt würden, um z.B. auf 32bit zu kommen, je nach Architektur.



  • NeoInferno schrieb:

    Ist das korrekt?

    Wenn matchoffset der höherwertige und matchsize der niederwertige Teil in codeword sein soll, dann ja.



  • Supi, danke, hab nämlich grad viele andere Probs im Code, schön dass wenigstens das zu gehen scheint (und dass ich als relativer Anfänger selbst auf die Lösung gekommen bin). 🙂


Log in to reply