Gibt es eine Möglichkeit wie man bei einer Variable in C überprüft ob das z.B. 3 bit 1 oder 0 ist ohne dabei die anderen Bits zu beachten. Hintergrund ist ich möchte eine Art Status bit für mein Programm basteln und es wäre super wenn ich da wie bei einem µC eine einzelne Variable für verschiedene Dinge nehmen könnte. Gruß Andreas
if (mybyte &(1<<0x04)) { Aktion.. } Ist doch einfacher.
Ups, nicht richtig gelesen! 'Maskieren' nennt man das Ganze und geht so wie Zip geschrieben hat.
FALSCH! if ((mybyte & 0x04)==0x04)) { .. } Da war 'n '&' zuviel drin! Oder seh' ich den Wald vor lauter Bäumen nicht mehr?
if (mybyte & (1<<mybit)) { } @sonic ist doch nicht so schwer oder ...
Danke genau das habe ich gesucht weil sonnst wäre das echt Speicherverschwendung für jedes an aus eine eigene Variable. Gruß Andreas
> if ((mybyte & 0x04)==0x04)) { .. }
das == kannst du dir auch sparen.
wenn man das ergebnis als 0 oder 1 haben will, kann man's auch so
machen.
#define GET_BIT(a,b) (!!(a&(1<<b)))
...
int i = 0x81;
int b7 = GET_BIT(i,7); // ergibt 1 weil bit 7 gesetzt ist
int b6 = IS_BIT(i,6); // ergibt 0 weil bit 6 nicht gesetzt ist
Jo, damit prüfste 1 bit, deshalb hab' ich mich ja korrigiert. Bit 0 => 1 Bit 3 => 8 ==> 0x09 if (!((mybyte & 0x09)==0x09))) { Aktion.. } So wird 'n Schuh draus.
Ich werde jetzt Feierabend machen ;-) if ((!(mybyte &(1<<0x00))) || (!(mybyte &(1<<0x03)))) { Aktion.. } Oder?
@Josef: Du betrachtest beide Bits gemeinsam, er möchte aber wissen ob bit 3 ODER bit 1 null ist. Das geht nur durch eine bitweise ODER-Abfrage.
> ob bit 3 ODER bit 1 null
Ergo
if( ( mbyte & 0x09 ) != 0x09 )
Wenn die Fragestellung lautet, ob bit 3 oder bit 1 eine
1 ist (oder beide)
if( ( mbyte & 0x09 ) != 0 )
Dann sag ich doch nochmal Danke für die vielen Beispiele und Möglichkeiten und das Forum hier ist einfach das Beste =) Gruß Andreas
> ...und das Forum hier ist einfach das Beste..
Jau, als Mitlesender hab ich auch wieder was gelernt!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.