RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : 정보처리기사 실기 2008/07/06 기출문제 알고리즘
글번호: 151
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2010/05/10 오후 4:28:00 (2010/05/10 오후 4:28:00 수정)
조회수: 3540

1. 알고리즘(30점)

 

<문제>

크기가 8인 배열 T(8)에 저장된 2진수를 10진수로 변환하여 출력하는 순서도이다. <그림>의 괄호 안 내용 (1)~(5)에 가장 적합한 항목을 <답항 보기>에서 선택하여 답안지의 해당 번호 (1)~(5)에 각각 마크하시오.

 

<처리조건>

1. <그림>에 제시되어 있는 알고리즘과 연계하여 가장 적합한 로직으로 구현될 수 있도록 답안 선택시 유의하시오.

2. 8비트 이진수 값의 최상위 비트는 부호 비트로 0이면 양수, 1이면 음수이다. 단, 음수일 경우 2의 보수로 표현된 값

3. 8비트 이진수 값은 크기가 8인 배열 T에 T(1)부터 T(8)까지 순차적으로 저장되어 있다. 단, T(1)에 부호 비트가 저장

4. 배열 T에 저장되어 있는 값의 범위는 10진수 -127 ~ 127에 해당하는 2진수 값이라고 가정한다.

5. 함수 “ABS()”는 절대값을 구하는 함수로 정의되어 있다. 예를 들면 ABS(-5)의 값은 5가 된다.

6. 함수 “POW(a, b)”는 누승값(a의 b승)을 구하는 함수로 정의되어 있다. 예를 들면 POW(2, 3)의 값은 2의 3승이 된다.

7. “&”는 마름모 내의 조건을 모두 만족하는 경우 YES, 하나라도 만족하지 않을 경우는 NO로 정의한다.

8. 반복문 a = 1, 50, 1일 경우에 1이 초기값, 50은 최종값, 1은 증가값이 된다.

 

<순서도>

clip_image002

 

<답항보기>

1

K

2

P=0

3

H(I)=0

4

I/ST

5

HAP+T(I)

6

K=0

7

SW=0

8

H(I)=1

9

J=I

10

HAP+H(B)

11

I

12

ABS(H(I))

13

H(S)=0

14

T=1

15

T=I

16

I=0

17

YES

18

T(I)*POW(2, 8-I)

19

B/K

20

T=B

21

T(10)

22

NO

23

T(S)=T(I)

24

1-H(I)

25

T=T(I)

26

T(9)

27

SIGN

28

T(I)=B

29

(I)-B

30

T=H(B)

31

T(12)

32

P+2

33

T(I)*POW(2, I-8)

34

ABS(T(I))

35

S+T

36

T(5)

37

T+1

38

S

39

H(I)-B

40

S+B

 

<정답>

1. T(I) - B

2. ABS(H(I))

3. 1-H(I)

4. T(I)*POW(2, 8-I)

5. SIGN

 

<순서도>

clip_image004

 

<요약 설명>

BinaryToDecimal1

 

<관련 C# 코드>

image


1 using System; 2 3 namespace Eip20080706 4 { 5 /// <summary> 6 /// 정보처리기사 실기 2008-07-06 기출문제 7 /// 음의 이진수를 십진수로 변환 : 최상위부호비트가 1이라면, 8 /// 2의 보수법을 사용하여 최상위부호비트를 제외한, 나머지 비트를 비트반전시킨 후 1을 더함 9 /// 또는 10 /// 그 반대로, 1을 먼저 뺀 후 비트반전 11 /// 12 /// </summary> 13 class Program 14 { 15 static void Main(string[] args) 16 { 17 //[1] Input 18 int S = 0; // 2진수의 합을 더해서 10진수 만들기 19 int K = 0; // 각 자릿수에 해당하는 10진수값 임시보관 20 21 int[] T = {1, 1, 1, 0 }; 22 int B = 1; 23 int[] H = {0, 0, 0, 0 }; 24 int SIGN = 1; 25 26 //[2] Process 27 if (T[0] == 0) // 양의 이진수일 때 28 { 29 SIGN = 1; // 부호를 1로 두어서 1을 곱하면 원래 그대로... 양의 정수형으로 나타남. 30 } 31 else // 음의 이진수일 때 32 { 33 SIGN = -1; // 부호를 -1로 두어서 -1을 곱하면 음수로 나타남. 34 B = 1; 35 for (int I = 3; I > 0; I--) 36 { 37 H[I] = T[I] - B; // 1을 먼저 뺀다. 38 if (T[I] == 0 && B == 1) // 최하위비트(오른쪽비트)부터 0일 경우 반올림한다. 39 { 40 B = 1; // 1을 뺄 목적으로 41 } 42 else 43 { 44 B = 0; // 그렇지 않은 경우에는 그대로 둔다. 45 } 46 H[I] = Math.Abs(H[I]); 47 } 48 for (int I = 1; I < T.Length; I++) 49 { 50 T[I] = 1 - H[I]; // 비트반전 51 } 52 } 53 54 for (int I = 3; I > 0; I--) 55 { 56 K = T[I] * (int)Math.Pow(2, 3 - I); // 각 자리수의 이진수를 십진수로 변환 57 S = S + K; // 각자리수의 10진수 합계 58 } 59 60 S = S * SIGN; // 부호를 저장함 61 //[3] Output 62 Console.WriteLine(S); // 이진수를 십진수로 변환한 값 출력 63 } 64 } 65 } 66
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 사랑니(Wisdom Tooth) 뽑기 - Administrator 2010-05-11 3541
현재글 정보처리기사 실기 2008/07/06 기출문제 알고리즘 - Administrator 2010-05-10 3540
다음글 팁. XHTML은 스크립트 블록에 Empty Element를 지원하지 않음 - Administrator 2010-05-10 3481
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3573
387 병합 알고리즘 순서도 2022-10-22 5119
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4413
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3225
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3123
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3159
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3072
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2985
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3038
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4174
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6888
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3064
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3033
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3034
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3089
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2964
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 3008
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3127
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3039
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3058
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home