C++/Arduino Frage, Anhängen von Bits an Variable

Wenn ich eine uint32_t-Variable habe, wie kann ich der Variablen Bits hinzufügen (oder anhängen)? Zum Beispiel;

0000 0000 0000 0000 0000 0000 0000 0000 *uint32_t*

0000 0000 0000 0000 0000 0000 0000 0001 << 1

0000 0000 0000 0000 0000 0000 0000 0010 << 0

0000 0000 0000 0000 0000 0000 0000 0101 << 1

0000 0000 0000 0000 0000 0000 0000 1011 << 1

und so weiter?

Ich habe eine Schleife, die 32 Mal die Größe der Variablen durchläuft, und möchte die Bits entsprechend setzen. Vielen Dank!

Bitshifting fügt eine 0 nach links oder rechts ein. Auf diese Weise fügen Sie also keine '1' hinzu.

uin32_t x = 0; // 0000 0000 0000 0000 0000 0000 0000 0000
x = x + 0b10; // 0000 0000 0000 0000 0000 0000 0000 0010
x <<= 1; // 0000 0000 0000 0000 0000 0000 0000 0100

Schau mal nach

bitSet()
bitClear()
bitRead()
bitWrite()
uint32_t machBitDran(uint32_t value, bool bit)
{
  value<<=1;
  value+=bit;
  return value;
}

value += bit;?

Ich weiß, das geht so und wird auch funktionieren, mir wird bei arithmetischen Operatoren und bool trotzdem immer mulmig. Ich schreibe deswegen eher

value |= bit;

:disguised_face:

So ist es!
Beide Varianten erfordern eine implizite Konvertierung.
Unterscheiden sich in dem Punkt also nicht.

Menschen und ihre Entscheidungen, da steckt eine ganz interessante/lustige Psychologie hinter.

Hast aber schon recht!
Die Variante ist etwas sparsamer.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.