Embedded systemen en firmware
Welke voorwaarde in C test of bit 5 van invoerregister in gelijk is aan 1?
- Aif (in | (1 << 5))
- Bif (in == 5)
- Cif (in & (1 << 5))
Antwoord en toelichting tonen
Antwoord: C. if (in & (1 << 5))
"in & (1 << 5)" levert een waarde waarin alle bits behalve bit 5 0 zijn; is bit 5 gelijk aan 1, dan is het resultaat 32 (ongelijk aan 0, dus waar) en anders 0 (onwaar). In C is elke waarde ongelijk aan 0 waar, dus dit kan rechtstreeks als voorwaarde van een if-instructie worden gebruikt. Wil men het resultaat als 1 of 0, dan schrijft men "(in >> 5) & 1". Bij OR is het resultaat altijd ongelijk aan 0, dus er wordt niets getest.