정보처리기사 실기C언어C 비트 연산난이도 4MCQ

정보처리기사 실기 C 비트 연산 기출문제 #3879

문제

다음 C 코드의 출력 결과로 가장 적절한 것은?

C
#include <stdio.h> typedef struct student { char* name; int score[3]; } Student; int dec(int enc) { return enc & 0xA5; } int sum(Student* p) { return dec(p->score[0]) + dec(p->score[1]) + dec(p->score[2]); } int main() { Student s[2] = { "Kim", {0xA0, 0xA5, 0xDB}, "Lee", {0xA0, 0xED, 0x81} }; int result = 0; for (int i = 0; i < 2; i++) { result += sum(&s[i]); } printf("%d", result); return 0; }

① 908 ② 806 ③ 512 ④ 1024

정답

1

해설

정답: 1. 각 점수에 대해 비트 AND 연산 enc & 0xA5를 수행하면 160, 165, 129, 160, 165, 129가 된다. 이를 모두 합산하면 908이다.

오답 풀이

  • 1번: 비트 AND 결과를 모두 합산한 값이다.
  • 2번: 일부 16진수 값을 10진수로 잘못 변환한 값이다.
  • 3번: AND 연산 대신 일부 값만 더한 경우이다.
  • 4번: 16진수 자리수를 단순 합산한 값과 혼동한 것이다.

보충 개념 C에서 &는 비트 단위 AND 연산자이다. 16진수 값을 2진수로 변환해 같은 자리의 비트가 모두 1인 경우만 1로 남는다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] C 비트 연산 C언어 기출 #3879 | 문어CBT