PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Einzelne Bits einer Int Variable negieren



xrzr
10.11.2015, 11:44
Hallo,
nach langer erfolgloser google suche, frage ich nun hier mal nach:
Ich möchte gerne folgendes realisieren:
Ich möchte gerne jedes einzelne Bit einer int variable ansprechen bzw negieren.
Sprich wenn z.B. eine If-Bedinung war ist, soll in der If Schleife ein bestimmtes Bit einer int Variable negiert werden:

If (TURE){

Aus: a = 0000 0001 soll z.B. 1000 0001 ( Das 8.Bit wurde negiert)


Danke

witkatz
10.11.2015, 12:23
wie wärs mit dem XOR

a ^= 1 << 7; // bit 7 toggeln

- - - Aktualisiert - - -

hab' noch eine gute Doku zu Bitmanipulationen gefunden, vielleicht hilft es zum Verständnis:
https://www.mikrocontroller.net/articles/Bitmanipulation

schorsch_76
10.11.2015, 16:55
Wenn man weis dass es 1 werden soll dann mit oder

// setze bit 7 auf 1
a |= (1<<7);

// lösche bit 7
a &= ~(1<<7);

[Klugscheiss Modus an]
Das gesetzte Bit ist Bit 7 und nicht 8

2^7 = 128 (MSB eines char/bytes)
2^0 = 1 (LSB eines char/bytes)
[/Klugscheiss Modus an]

https://de.wikipedia.org/wiki/Bitwertigkeit

xrzr
10.11.2015, 19:43
Danke.
Meinte auch eigentlich das 7.Bit. War in gedanken bei 1Byte= 8Bit. Deswegen habe ich vermutlich versehentlich 8 geschrieben.

Aber trotzdem danke für die Info. Es soll ja auch korrekt hier stehen, nicht das irgendwer anders das mal liest und meint es wäre so richtig, wie ich es versehentlich falsch geschrieben habe.