임베디드 시스템과 펌웨어
C 언어에서 레지스터 reg의 비트 3만 0으로 만들고 나머지 비트는 바꾸지 않는 올바른 표기는 무엇입니까?
- Areg &= ~(1 << 3);
- Breg |= ~(1 << 3);
- Creg &= (1 << 3);
정답과 해설 보기
정답: A. reg &= ~(1 << 3);
'~(1 << 3)'은 비트 3만 0이고 나머지는 모두 1인 값입니다. 이것과 AND(&)를 취하면 비트 3은 반드시 0이 되고, 나머지 비트는 1과의 AND이므로 원래 값 그대로 남습니다. 비트를 세우는 OR, 내리는 AND NOT, 반전시키는 XOR(^), 검사하는 AND의 네 가지는 펌웨어에서 레지스터를 조작할 때의 기본 형태입니다.