모두CBT

23-1아래 C 프로그램은 10진 정수 형태로 적은 2진수 110101… | 2023년 정보처리기사실기 1회차 기출문제 상세 페이지

11

23-1

아래 C 프로그램은 10진 정수 형태로 적은 2진수 110101을 10진수로 바꾸어 출력한다. 출력이 53이 되도록 빈칸 ①, ②에 알맞은 연산자와 값을 적으시오.

#include <stdio.h>

int main(void) {
    int bin = 110101;
    int weight = 1;
    int result = 0;

    while (bin > 0) {
        result += (bin __①__ __②__) * weight;
        weight *= 2;
        bin /= 10;
    }
    printf("%d", result);
    return 0;
}
해설

① %

② 10


[해설]

정수 bin을 10으로 나눈 나머지(bin % 10)는 맨 끝 자릿수(0 또는 1)다. 그래서 연산자 칸에는 %, 값 칸에는 10이 들어간다.

끝자리에 가중치 weight(1, 2, 4, …)를 곱해 더하고, bin /= 10으로 끝자리를 떼어 낸다.
끝자리부터 1, 0, 1, 0, 1, 1
1×1 + 0×2 + 1×4 + 0×8 + 1×16 + 1×32
= 53

각 자릿수가 0 또는 1뿐이라 bin % 2나 bin & 1도 끝자리 값과 같아서 결과는 같다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.