| 제목 | 답변 준비중 비트연산자와 조건연산자 의미 질문 | ||
|---|---|---|---|
| 질문유형 | 강좌내용 | 교수님 | 장윤경 |
| 과목 | 프로그래밍(C언어) | 강좌명 | [프로그래밍(C언어)] 실습으로 이해하는 프로그래밍 첫걸음 : C언어 |
| 작성자 | 주*수 (j********6) | 등록일 | 2026-03-08 23:24 |
|
교수님 안녕하세요 교수님 설명 덕분에 C언어를 쉽게 이해하고 있습니다. 11강 수업 내용 중 궁금한 것이 있어 질문 남깁니다. 비트연산자 실습 문제 중 다음의 코딩내용에 대해, #include <stdio.h> int main() { char room = 0; printf("2번 방과 7번 방의 불을 ON하세요.\n"); room = room | 2; room |= 64; // room = room | 64; printf("1번 방의 불이 켜져있는 것은 %d입니다.\n",(room & 1) ? 1: 0 ); printf("2번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 2) ? 1 : 0); printf("3번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 4) ? 1 : 0); printf("4번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 8) ? 1 : 0); printf("5번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 16) ? 1 : 0); printf("6번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 32) ? 1 : 0); printf("7번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 64) ? 1 : 0); printf("8번 방의 불이 켜져있는 것은 %d입니다.\n", (room & 128) ? 1 : 0); return 0; } 조건연산자의 경우, A? B: C에 대해 A가 참일 때 B를 실행(출력)하고, A가 거짓일때 C를 실행(출력)한다고 할 때, 위 코딩에서 (room & 1) ? 1: 0에 대해 A에 해당하는 (room & 1)의 참 거짓은 어떻게 판별하는 것인가요? 제가 추측하기에는 (room & 1)의 경우 8비트가 00000000로 이루어져 0을 의미하므로 컴퓨터는 0을 거짓으로 받아들여 C에 해당하는 0을 출력한 것이고, (room & 2)의 경우 8비트가 00000010로 이루어져 2를 의미하므로 컴퓨터는 0이외의 숫자는 참으로 받아들여 B에 해당하는 1을 출력한 것이며, (room & 64)의 경우 8비트가 01000000로 이루어져 64를 의미하므로 마찬가지로 컴퓨터는 0이외의 숫자는 참으로 받아들여 B에 해당하는 1을 출력한 것이라고 생각했습니다. 제가 생각한 논리가 맞는 것인지 궁금합니다. 끝으로 좋은 수업 제공해주셔서 감사합니다. 답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다. |
|||
- 댓글
- 0























