Embedded systemen en firmware
Welke schrijfwijze in C zet alleen bit 3 van register reg op 1 en laat de overige bits ongewijzigd?
- Areg |= (1 << 3);
- Breg = (1 << 3);
- Creg &= (1 << 3);
Antwoord en toelichting tonen
Antwoord: A. reg |= (1 << 3);
"1 << 3" is binair 00001000, een waarde (masker) waarin alleen bit 3 gelijk is aan 1. Wordt dit met de registerwaarde samengevoegd met OR (|), dan is bit 3 altijd 1 en blijven de overige bits ongewijzigd. Bij toewijzing (=) worden ook de andere bits met 0 overschreven, waardoor andere instellingen van randschakelingen worden verstoord. Bitnummers worden geteld vanaf 0 voor het minst significante bit.