Hallo Leute!
Ich brauche mal eure Hilfe. Ich habe eine 16Bit breite Variable, welche
ein Reihe vom Flags beeinhaltet. Jetzt möchte ich nur einzelne Bits
dieser Variable ändern, indem ich an eine Funktion einen neuen Wert
schicke.
Beispiel (pseudo-Code):
1 | flags: 0010 1000 1101 0010
|
Die letzten vier Bits sind jetzt die Stellen, die ich manipulieren will.
Ziel ist es, per Funktion
1 | void change_bits( 0x0004 | 0x0001 );
|
eben nur diese letzten vier Bits auf den neuen Wert zu setzen, sodass am
Ende
1 | flags: 0010 1000 1101 0101
|
herauskommt.
Aber wie verknüpfe ich das? So geht es zumindest schonmal nicht:
1 | void change_bits( uint16_t new_flags )
|
2 | {
|
3 | flags &= (new_flags & 0x000F);
|
4 | }
|
Da ist dann alles weg, was auch klar ist. Aber ich komme nicht auf die
richtige Verknüpfung.
Kann einer helfen?
[/c]