Bits setzen / löschen in einer Funktion
-
Hallo,
ich möchte gern innerhalb einer Funktion ein bestimmtes Bit setzen oder auch löschen können - wie realisiere ich das am Besten?
void main() { function(0x0002); //zweites bit setzen function(~(0x0002)); //zweites bit wieder löschen -> klappt nicht :( } void function(unsigned short bits) { unsigned short test=0; test |= bits; //bits setzen (wie kann ich sie auch löschen)? }
thanks in advance
Jörg
-
Signatur fuer eine moegliche Funktion:
// bitpos: bit number of a byte // ref: points to the byte that should be changed // value: 0 or 1 void setbit( char bitpos, byte* ref, char value );
-
^^zum löschen nimm 'ne und-verknüpfung mit dem negierten zweiten operanden. z.b. so:
x = x & ~2; // <-- löscht bit 2
-
vielen Dank für die Antworten... das mit dem &-Zeichen wusste ich schon, dachte es gibt vielleicht einen kniffligen Trick ohne einem weiteren übergebenen Funktions-Parameter festlegen zu können, ob das Zeichen gelöscht oder gesetzt wird.
Jörg
-
Jörg Berger schrieb:
ich schon, dachte es gibt vielleicht einen kniffligen Trick ohne einem weiteren übergebenen Funktions-Parameter festlegen zu können
mit tricks geht alles. kannst ja die funktion so schreiben, dass sie bits nur setzt, die vorher 0 waren, umgekehrt werden sie gelöscht. das schipft sich übrigens 'exklusiv-oder'