본문 바로 가기

로고

  • 회원가입
  • 로그인
통합검색
답변 준비중 비트연산자와 조건연산자 의미 질문
  • 작성자 주*수 (j********6)
  • 작성일 2026-03-08
  • 과목 프로그래밍(C언어)
질문유형
강좌내용
강좌
[프로그래밍(C언어)] 실습으로 이해하는 프로그래밍 첫걸음 : C언어
교수님 안녕하세요
교수님 설명 덕분에 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