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 🙂


Anmelden zum Antworten