Embedded Systems und Firmware
Welche C-Bedingung prüft, ob Bit 5 des Eingaberegisters in gleich 1 ist?
- Aif (in | (1 << 5))
- Bif (in == 5)
- Cif (in & (1 << 5))
Antwort und Erläuterung anzeigen
Antwort: C. if (in & (1 << 5))
„in & (1 << 5)“ ergibt einen Wert, in dem alle Bits außer Bit 5 gleich 0 sind; ist Bit 5 gleich 1, ist das Ergebnis 32 (ungleich 0, also wahr), sonst 0 (falsch). Da in C alles ungleich 0 wahr ist, lässt es sich direkt als Bedingung einer if-Anweisung verwenden. Soll das Ergebnis 1 oder 0 sein, schreibt man „(in >> 5) & 1“. Mit ODER ist das Ergebnis stets ungleich 0, und es wird nichts geprüft.