Um festzustellen, ob ein bestimmtes Bit gesetzt ist (das erste Bit ist Bit 0), musst du einfach den Zahlenwerts des Bits an dieser Stelle mit der zu untersuchen Zahl mit AND verknüpfen.
Anbei einige Beispiele:
Der zu untersuchende Wert soll 147 sein (das ist in Hex-Darstellung 0x93, in Binär also 1001 0011) und ist in der Variaben "value" gespeichert
int value = 147:
// Überprüfung ob Bit 7 gesetzt ist:
if ((value & 0x80) == 0x80)
{
printf("Bit 7 ist gesetzt");
}
else
{
printf("Bit 7 ist nicht gesetzt");
}
Überprüfung der anderen Bits:
Bit 6 -> Überprüfung mit 0x40
Bit 5 -> Überprüfung mit 0x20
Bit 4 -> Überprüfung mit 0x10
Bit 3 -> Überprüfung mit 0x08
Bit 2 -> Überprüfung mit 0x04
Bit 1 -> Überprüfung mit 0x02
Bit 0 -> Überprüfung mit 0x01
Du kannst auch Kombination von Bits überprüfen, wenn du z. B. feststellen willst, ob das Bit 0 und das Bit 4 GLEICHZEITIG gesetzt sind, dann kannst du das mit
if ((value & 0x11) == 0x11)
....
überprüfen.
Aber Vorsicht: Ist nur eins der beiden gesetzt, dann ist die Bedingung insgesamt nicht erfüllt, da das eigentlich nur die Kurzschreibweise von
if (((value & 0x10) == 0x10) && ((value & 0x01) == 0x01)
....
ist.
Ich hoffe, dass das nun einigermaßen verständlich war.
Rudi