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