본문 바로 가기
강좌찾기
교수소개
커뮤니티
이벤트
로그인/회원가입 하기
통합검색
수강중 강좌
장바구니
이용문의
학습Q&A
강좌찾기
패키지
전체 강좌
교수소개
공학계열
자연계열
수학계열
간호계열
상경계열
기초·공통
커뮤니티
수강후기
학습 Q&A
대학생활 꿀팁
장학제도 프로그램
이벤트
이벤트존
쿠폰 · 즉시 혜택
학습지원센터
공지사항
이용문의
환불요청
FAQ
마이페이지
수강중인 강좌
수강대기 강좌
수강종료 강좌
구독 중인 AI
구독 종료된 AI
결제정보
내 지갑
개인정보
수강후기
학습 Q&A
대학생활 꿀팁
장학제도 프로그램
답변 준비중
비트연산자와 조건연산자 의미 질문
작성자 주*수 (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
건
목록