Bitüberprüfung



  • Hallo zusammen,

    ich arbeite gerade an einem C-Projekt und lese über die serielle Schnittstelle ein Byte ein.
    In diesem Byte muss ich überprüfen, ob ein bestimmtes Bit ,nehmen wir mal an 7, auf 1 oder eben auf 0 gesetzt ist.
    Ist es auf eins gesetzt, so bekomme ich als Wert logischerweise eine 128.
    Die anderen Bits können jedoch auch an sein und somit die Zahl erhöhen.
    Jetzt wüsste ich gerne, ob es eine Funktion, Trick oder eine einfach Rechnung gibt, mit der ich dieses Problem lösen kann.
    Vielleicht kann mir ja hier jemand weiterhelfen 😃



  • Hallo!

    1. Du baust Dir eine Zahl in der alle Bits 0 sind bis auf das eine das Du prüfen willst.
    2. Du verküpfst diese Zahl mit der Zahl die Du prüfen willst und zwar mit & (bitweises &).
    3. Ist das Ergebnis 0 ist das Bit nicht gesetzt, bei != 0 ist es gesetzt.



  • Hallo!

    Z.B. so:

    #include <stdio.h>
    
    int main(void)
    {
      int x=0x40, // == (01000000)2
        y=0xFF,   // == (11111111)2
        z=0xBF;   // == (10111111)2
    
      if(x & y)
        printf("6. Byte gesetzt!\n");
      else
        printf("6. Byte nicht gesetzt!\n");
    
      if(x & z)
        printf("6. Byte gesetzt!\n");
      else
        printf("6. Byte nicht gesetzt!\n");
    
      return(0);
    }
    


  • Hi void*

    danke für deine schnelle Hilfe, werde ich jetzt gleich mal testen.



  • So kannst du prüfen, ob das n-te Bit (Die Bitnummern beginnen bei 0) gesetzt ist:

    if(x & (1 << n))
            // n-tes Bit ist gesetzt
    

    mfg Gary


Anmelden zum Antworten