Embedded Systems und Firmware
Welche C-Schreibweise setzt nur Bit 3 des Registers reg auf 0 und lässt die übrigen Bits unverändert?
- Areg &= ~(1 << 3);
- Breg |= ~(1 << 3);
- Creg &= (1 << 3);
Antwort und Erläuterung anzeigen
Antwort: A. reg &= ~(1 << 3);
„~(1 << 3)“ ist ein Wert, in dem nur Bit 3 gleich 0 und alle anderen 1 sind. Bei UND (&) mit diesem Wert wird Bit 3 stets 0, und die übrigen Bits bleiben wegen UND mit 1 unverändert. Setzen mit ODER, Löschen mit UND NOT, Invertieren mit XOR (^) und Prüfen mit UND sind die vier Grundformen der Registerzugriffe in Firmware.