책 내용 질문하기
2016년 2회 기출 47번 다음 C언어는 두 수의 비트별 AND, OR, XOR로 구하는 프로그램이다. 실행결과는?
도서
2017 시나공 총정리 사무자동화산업기사 필기
페이지
92
조회수
210
작성일
2017-02-21
작성자
첨부파일

문제가 너무 어렵네요....

2015년 기출까진는 3과목이 꽤 쉽고 반복되는 문제들만 보였는데

2016부터 계산하는 어려운문제들이 나와서 골치아픕니다.

해설봐도 이해가 안가요

아주 쉽게 자세한 설명좀 부탁드려요.....

답변
2017-02-22 09:24:54

안녕하세요. 길벗 수험서 운영팀입니다.

문의한 문제는 C언어 코드로 코드에 사용된 연산자의 사용법만 알고 있으면 어려지 않게 답을 찾을 수 있습니다.

&은 AND 연산자로 두 비트가 모두 1일 때만 1로 표시합니다.

|은 OR 연산자로 두 비트 중 한 비트라도 1이면 1을 표시합니다.

^은 XOR 연산자로, 두 비트가 모두 같으면 0, 서로 다르면 1을 표시합니다.

int a=3, b=6; - a = 3, b = 6입니다.
int c, d, e; - c, d, e는 정수입니다.
c=a & b; - c = a and b로, a, 즉 3을 2진수로 변환하면 0011이고, b, 즉 6을를 2진수로 변환하면 0110입니다.

(3 = 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0, 6 = 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0,^은 거듭제곱을 의미함)

and 연산은 두 비트가 모두 1일 때만 1을 반환하므로

0011

and 0110

0010 입니다. 2진수 0010을 10진수로 변환하면 2입니다. 그러므로 c는 2입니다.

d=a | b; - d = a or b로, or 연산을 두 비트 중 한 비트라도 1이면 1을 반환하므로

0011

or 0110

0111 입니다. 2진수 0111을 10진수로 변환하면 7입니다. 그러므로 d는 7입니다.


e=a ^ b; - e = a xor b로, xor 연산을 두 비트가 모두 같으면 0, 서로 다르면 1을 반환하므로

0011

or 0110

0101 입니다. 2진수 0101을 10진수로 변환하면 5입니다. 그러므로 d는 5입니다.

printf(“%d %d %d\n”, c, d, e); - c, d, e를 차례대로 표시하면 2 7 5입니다.

행복한 하루되세요.^^

  • *
    2017-02-22 09:24:54

    안녕하세요. 길벗 수험서 운영팀입니다.

    문의한 문제는 C언어 코드로 코드에 사용된 연산자의 사용법만 알고 있으면 어려지 않게 답을 찾을 수 있습니다.

    &은 AND 연산자로 두 비트가 모두 1일 때만 1로 표시합니다.

    |은 OR 연산자로 두 비트 중 한 비트라도 1이면 1을 표시합니다.

    ^은 XOR 연산자로, 두 비트가 모두 같으면 0, 서로 다르면 1을 표시합니다.

    int a=3, b=6; - a = 3, b = 6입니다.
    int c, d, e; - c, d, e는 정수입니다.
    c=a & b; - c = a and b로, a, 즉 3을 2진수로 변환하면 0011이고, b, 즉 6을를 2진수로 변환하면 0110입니다.

    (3 = 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0, 6 = 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0,^은 거듭제곱을 의미함)

    and 연산은 두 비트가 모두 1일 때만 1을 반환하므로

    0011

    and 0110

    0010 입니다. 2진수 0010을 10진수로 변환하면 2입니다. 그러므로 c는 2입니다.

    d=a | b; - d = a or b로, or 연산을 두 비트 중 한 비트라도 1이면 1을 반환하므로

    0011

    or 0110

    0111 입니다. 2진수 0111을 10진수로 변환하면 7입니다. 그러므로 d는 7입니다.


    e=a ^ b; - e = a xor b로, xor 연산을 두 비트가 모두 같으면 0, 서로 다르면 1을 반환하므로

    0011

    or 0110

    0101 입니다. 2진수 0101을 10진수로 변환하면 5입니다. 그러므로 d는 5입니다.

    printf(“%d %d %d\n”, c, d, e); - c, d, e를 차례대로 표시하면 2 7 5입니다.

    행복한 하루되세요.^^

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.