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).