임베디드 시스템과 펌웨어
입력용 레지스터 in의 비트 5가 1인지 검사하는 올바른 C 언어 조건은 무엇입니까?
- Aif (in | (1 << 5))
- Bif (in == 5)
- Cif (in & (1 << 5))
정답과 해설 보기
정답: C. if (in & (1 << 5))
'in & (1 << 5)'는 비트 5 이외를 모두 0으로 만든 값이 되므로, 비트 5가 1이면 32(0이 아니므로 참), 0이면 0(거짓)이 됩니다. C 언어에서는 0이 아닌 값이 참이므로 그대로 if문의 조건으로 쓸 수 있습니다. 결과를 1 또는 0으로 얻고 싶으면 '(in >> 5) & 1'로 씁니다. OR을 쓰면 결과가 항상 0이 아니게 되어 검사가 되지 않습니다.