Ich würde gerne eine Bitoperation mit einer Bitmaske machen. Ich hab in
einem 4Byte großen Register an einer Stelle zwei Werte die ich verändern
möchte, am liebsten natürlich in einer Operation. Ich zeig mal wie ich
das vorhabe:
1 | uint32_t Register = 0;
|
2 |
|
3 | // Ich möchte Bitposition z.b. 10 und 11 ändern:
|
4 |
|
5 | Register |= (1 << 10); // Schiebt eine 1 an Bit 10
|
6 | Register |= (2 << 10); // Schiebt mir eine 1 an Bit 11
|
7 | Register |= (3 << 10); // Schiebt jeweils eine 1 an Bit 10 und 11)
|
Nun aber, wenn Bit 10 bereits eine 1 enthält würde...
... ja nun eine 1 an Pos 11 schieben, aber dies ist ja nicht gewollt.
Wie könnte ich dies nun umgehen ohne jedesmal vorher "händisch" Bit 10
und Bit 11 zu löschen um sie dann wieder zu beschreiben?! Gibts da einen
Trick in C?
Vielen Dank euch!