Frank Schönmann: Bit abfragen/setzen/löschen

Beitrag lesen

hi!

vielleicht schon mal gefragt, leider nichts gefunden, wie kann ich
aus z.B. einem Integerwert ein einzelnes Bit abfragen/setzen/
löschen

Zuerst musst du wissen, welche Werte die einzelnen Bits haben. Das
niederwertigste Bit hat den Wert 1, das nächste den Wert 2, dann den
Wert 4, und so weiter. Das i-te Bit hat also den Wert 2^(i-1).

Dann gibt es bitweise logische Verknüpfungen, die du anwenden kannst.
Das sind & (AND), | (OR) und ^ (XOR). Du musst dir überlegen, wie du
mit diesen Operatoren die Werte abfragen und verändern kannst.

Mal ein paar Beispielrechnungen:

10101010    10101010
& 00001000  & 00000100
----------  ----------
  00001000    00000000

Damit kannst du also ein Bit abfragen. Du ver-UND-est die Zahl, die
überprüft werden soll mit einer Zahl, in der nur das abzufragende
Bit gesetzt ist. Wenn 0 herauskommt, war das Bit nicht gesetzt, sonst
schon.

10101010    10101010
| 00001000  | 00000100
----------  ----------
  10101010    10101110

Damit kannst du ein bestimmtes Bit setzen. Ist das entsprechende
Bit schon gesetzt, dann bleibt es auch erhalten.

10101010    10101010
^ 00001000  ^ 00000100
----------  ----------
  10100010    10101110

So kannst du ein Bit umkippen: ist das Bit gesetzt, dann wird es
gelöscht, ansonsten wird es gesetzt. Das ist dann auch eine Methode,
um ein gesetztes Bit zu löschen, nämlich indem du vorher überprüfst,
ob es gesetzt ist, und dann mit einer XOR-Operation umkehrst.

bye, Frank!

--
Never argue with an idiot. He will lower you to his level and then
beat you with experience.