Testen ob bit gesetzt ist
-
Hallo ich habe ein problem ich mus testen ob z.B. das 3 Bit in einer Int gesetzt ist. Wir haben dafür diese anleitung bekommen:
"Durch geschickte Bit Operationen kann man den Wert eines Bits abfragen. Zum Beispiel testet man über ( (x & 0x08) == 0x08 ) ab, ob Bit 3 von x gesetzt ist."
Habe das ganze mal ausprobiet mit einer if abfage so:
if ( (b_zahl_1 & 0x08) == 0x08 ) printf("hallo");
aber egal was ich für eine zahl ich eingebe es wird nie "hallo" ausgegeben. Wär nett wenn mir jemand sagen könnt wie ich das richtig mache.
MfG
Xanthus
-
geht doch!
#include <stdio.h> int main() { int x=15; if ( (x & 0x08) == 0x08 ) printf("hallo\n"); return 0; }
oder so
#include <stdio.h> int main() { int x=0x0800, bit_nr=11; if ( x>>bit_nr & 1 ) printf("hallo\n"); return 0; }
-
statt
if( (x&foo) == foo)finde ich ein
if(x&foo)
viel schöner.denn wenn foo nicht gesetzt ist, liefert x&foo ja 0