liquid
2003-08-24, 23:43:37
Hiho Leute,
sagen wir mal ich hab nen unsigned long integer namens bitfield. Dann hab ich ja 32 Bits die ich entweder an oder aus gesetzt haben kann. Sagen wir auch ich habe bitfield mit 0x00000000 initialisiert.
Dann habe ich ein Enumerator
enum BITFIELD_ENUM
{
STATE_01 = 1,
STATE_02 = 2,
STATE_03 = 4,
STATE_04 = 8,
STATE_05 = 16,
STATE_06 = 32,
... und halt so weiter
};
So, jetzt guckt mal bitte ob ich bei meiner Überlegung richtig liege.
Ich setze ein Bit mit
bitfield |= STATE_X (OR mit Zuweisung)
Ich "flippe" ein Bit mit
bitfield ^= STATE_X (XOR mit Zuweisung)
Nur wie lösche ich ein Bit wieder, also setze die Position auf Null? Mit
bitfield &= STATE_X (AND mit Zuweisung)
geht es offensichtlich nicht, oder doch?
Ahja, noch so ein paar Sachen. Mit AND kann ich den Zustand eines Bits prüfen, richtig?
Also nach dem Motto
if (bitfield & STATE_X)
BLA_BLA();
Schonmal Danke für die Hilfe!!
cya
liquid
sagen wir mal ich hab nen unsigned long integer namens bitfield. Dann hab ich ja 32 Bits die ich entweder an oder aus gesetzt haben kann. Sagen wir auch ich habe bitfield mit 0x00000000 initialisiert.
Dann habe ich ein Enumerator
enum BITFIELD_ENUM
{
STATE_01 = 1,
STATE_02 = 2,
STATE_03 = 4,
STATE_04 = 8,
STATE_05 = 16,
STATE_06 = 32,
... und halt so weiter
};
So, jetzt guckt mal bitte ob ich bei meiner Überlegung richtig liege.
Ich setze ein Bit mit
bitfield |= STATE_X (OR mit Zuweisung)
Ich "flippe" ein Bit mit
bitfield ^= STATE_X (XOR mit Zuweisung)
Nur wie lösche ich ein Bit wieder, also setze die Position auf Null? Mit
bitfield &= STATE_X (AND mit Zuweisung)
geht es offensichtlich nicht, oder doch?
Ahja, noch so ein paar Sachen. Mit AND kann ich den Zustand eines Bits prüfen, richtig?
Also nach dem Motto
if (bitfield & STATE_X)
BLA_BLA();
Schonmal Danke für die Hilfe!!
cya
liquid