Embedded systemen en firmware
Welke schrijfwijze in C zet alleen bit 3 van register reg op 0 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 een waarde waarin alleen bit 3 gelijk is aan 0 en alle andere bits 1 zijn. Wordt hiermee een AND (&) uitgevoerd, dan is bit 3 altijd 0 en blijven de overige bits ongewijzigd, omdat ze met 1 worden ge-ANDed. Bits zetten met OR, bits wissen met AND NOT, bits omkeren met XOR (^) en bits testen met AND zijn de vier basisvormen voor het bedienen van registers in firmware.