교수님 안녕하세요
교수님 설명 덕분에 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을 출력한 것이라고 생각했습니다.
제가 생각한 논리가 맞는 것인지 궁금합니다.
끝으로 좋은 수업 제공해주셔서 감사합니다.
※ 답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.