vararan
1
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!
J-M-L
2
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
Plumps
3
Schau mal nach
bitSet()
bitClear()
bitRead()
bitWrite()
combie
4
uint32_t machBitDran(uint32_t value, bool bit)
{
value<<=1;
value+=bit;
return value;
}
Miq1
5
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;

combie
6
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.
system
Closed
7
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.