Fehler bits löschen



  • Hallo ich habe einen 8 bit Wert der mir angibt welche Fehler auftreren können.
    So jetzt werden diese Fehler verschieden bewertet. Da an bit 3 und 4 häufig Fehler auftreten welche auf die Hardware zurück zuführen sind soll ich dise ignorieren. Wie kann ich das machen? ich soll diese 2 bit unabhängig von ihrem wert auf 0 setzen.Alle anderen sollen aber ihre gültigkeit behalten.



  • unsigned int bitmask = /*ein Wert*/;
    bitmask &= ~(1<<2); // bit 3 löschen
    bitmask &= ~(1<<3); // bit 4 löschen
    // oder
    bitmask &= ~((1<<2) | (1<<3));
    


  • Das geht mit den Binären UND und NICHT Operatoren.
    Binäres UND : &
    Binäres NICHT : ~
    und
    Binäres ODER : |
    Binäres EXOR : ^

    Damit kannst du die Bits dann maskieren
    Bit 4 und 3 ->
    0001 1000 -> 0x18
    Jetzt musst du das noch Invertieren mit ~

    FehlerCode = FehlerCode & ~0x18;
    //oder kürzer
    FehlerCode &= ~0x18;
    
    0101 0110 : Fehlercode
     1110 0111 : Invertierts 0x18
    &==========
    =0100 0110 : Ergebnis
    

Log in to reply