icon

안동민 개발노트

부록

계산형 풀이훈련

부록 학습 절입니다.

계산형 문제는 암기보다 풀이 순서가 중요합니다. 아래 유형은 반드시 손으로 한 번씩 써 봅니다.

진법 변환

풀이법

  1. 2진수에서 10진수로 갈 때는 각 자리의 2의 거듭제곱을 더합니다.
  2. 10진수에서 2진수로 갈 때는 2로 나누고 나머지를 역순으로 읽습니다.
  3. 2진수에서 16진수로 갈 때는 오른쪽부터 4비트씩 묶습니다.

예제

101101₂ = 32 + 8 + 4 + 1 = 45
27₁₀ = 11011₂
11110000₂ = 1111 0000 = F0₁₆

훈련 문제

번호문제정답
11010₂를 10진수로10
21111₂를 10진수로15
325₁₀을 2진수로11001
411010110₂을 16진수로D6
5A₁₆을 2진수로1010

2의 보수

풀이법

  1. 양수의 2진수 표현을 씁니다.
  2. 0과 1을 반전합니다.
  3. 1을 더합니다.

예제

5 = 0101
1의 보수 = 1010
2의 보수 = 1011
따라서 4비트에서 -5 = 1011

훈련 문제

번호문제정답
14비트에서 -31101
24비트 1111의 값-1
34비트 1001의 값-7
48비트에서 -1211110100
54비트 4-5 결과1111

C 코드 출력 추적

풀이법

  1. 변수 초기값을 표에 씁니다.
  2. 한 줄씩 실행하면서 값이 바뀔 때마다 갱신합니다.
  3. 전위/후위 증가, 정수 나눗셈, 배열 인덱스, 매크로 단순 치환을 우선 확인합니다.

예제

#define SQ(x) x*x
printf("%d", SQ(1+2));
SQ(1+2) → 1+2*1+2 → 5

훈련 문제

번호문제정답
1int a=7/2; 출력3
2printf("%d", 3+4*2);11
3int a[3]={1,2,3}; a[1]2
4int x=10; int *p=&x; *p=20; x20
5for(i=1;i<=4;i++) sum+=i;10

후위표기식

풀이법

  1. 피연산자는 스택에 넣습니다.
  2. 연산자를 만나면 피연산자 2개를 꺼내 계산합니다.
  3. 결과를 다시 스택에 넣습니다.

예제

23+4* → (2+3)*4 = 20

훈련 문제

번호문제정답
123+5
223+4*20
382/3+7
452-4*12
5중위 A+B*C의 후위ABC*+

트리 순회

기준

순회순서
전위루트 → 왼쪽 → 오른쪽
중위왼쪽 → 루트 → 오른쪽
후위왼쪽 → 오른쪽 → 루트

예제

    A
   / \
  B   C
순회결과
전위ABC
중위BAC
후위BCA

스케줄링 계산

공식

반환시간 = 완료시간 - 도착시간
대기시간 = 반환시간 - 실행시간

예제

도착시간이 모두 0이고 실행시간이 2, 4, 6인 작업을 FCFS로 처리하면 다음과 같습니다.

작업완료시간반환시간
A22
B66
C1212

평균 반환시간은 (2+6+12)/3 = 20/3입니다.

페이지 교체

알고리즘교체 기준
OPT앞으로 가장 오래 쓰지 않을 페이지
FIFO가장 먼저 들어온 페이지
LRU가장 오래 사용하지 않은 페이지
LFU사용 횟수가 가장 적은 페이지

훈련 팁

페이지 교체 문제는 프레임 표를 직접 그리고, 참조할 때마다 Hit인지 Fault인지 표시합니다.

부울대수와 카르노맵 기본

핵심 규칙

규칙의미
A + A = A같은 항의 OR는 자기 자신
A·A = A같은 항의 AND는 자기 자신
A + A' = 1어떤 값이든 참 또는 거짓 중 하나
A·A' = 0동시에 참과 거짓일 수 없음
(AB)' = A' + B'드모르간
(A+B)' = A'B'드모르간

훈련 문제

번호문제정답
1A + AA
2A·A'0
3(AB)'A' + B'
4(A+B)'A'B'
5A + ABA

캐시·성능 계산

공식

평균 접근 시간 = 히트율 × 캐시 접근 시간 + 미스율 × 주기억장치 접근 시간
미스율 = 1 - 히트율

예제

히트율 0.8, 캐시 10ns, 주기억 100ns라면
0.8×10 + 0.2×100 = 8 + 20 = 28ns

주소지정 방식 판별

방식판별 키워드
즉치값 자체
직접주소가 데이터 위치를 바로 가리킴
간접주소가 있는 곳에 다시 주소가 있음
레지스터레지스터 안의 값 사용
레지스터 간접레지스터 안의 주소 사용

운영체제 추가 계산형

Banker's algorithm 기초 판별

시험에서 깊은 계산보다 안전 상태의 의미를 묻는 경우가 많습니다.

안전 상태 = 어떤 순서로든 모든 프로세스가 종료될 수 있는 상태
불안전 상태 = 교착상태가 반드시 발생한다는 뜻은 아니지만 위험한 상태

디스크 스케줄링 기초

방식기준
FCFS요청 순서대로 처리
SSTF현재 헤드 위치에서 가장 가까운 요청 먼저
SCAN한 방향으로 이동하며 처리 후 반대 방향
C-SCAN한 방향으로만 순환 처리