2→10진수 - 제주국제대학교

Download Report

Transcript 2→10진수 - 제주국제대학교

알고리즘 이해와 연습
4. 자료변환
1. 2진수 덧셈
2. 2의 보수 구하기
3. 진법변환(10→2진수)
4. 진법변환(2→10진수)
5. 진법변환2(2→10진수)
6. 코드변환(그레이코드
↔2진수)
2진수 덧셈
 배열 X(10)과 Y(10)에 2진수가 각각 입력되어 있다. 두 2
진수의 덧셈 결과를 2진수 형태로 출력하고자 한다. 제시
된 <처리조건>을 참조하여 <그림>의 괄호 안 내용에 가
장 적합한 항목을 <답항보기>에서 선택하시오.
|처리조건|
1. 배열크기가 10일 경우 배열의 요소는 1부터 10까지 구성
되는 것으로 한다. 예를 들어, H라는 배열의 크기가 10일
경우 H(10)으로 표시하고 구성요소는 H(1)부터 H(10)으
로 구현한다고 가정한다.
2. 배열 X(10) 및 Y(10)에 입력되어 있는 2진수 값의 부호
비트는 없으며, 범위는 0000000000~1111111111 로
간주한다.
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
3. 각 배열의 첫 번째 요소 X(1), Y(1), A(1)를 MSB(최상위
비트)로 간주한다.
4. 덧셈의 결과 MSB에서 올림수가 발생하면 “OVERFLOW”
라고 출력한다.
5. 알고리즘에 사용된 변수들은 다음과 같다.
-
알고리즘
X(10), Y(10) : 연산할 2진수 데이터 저장 배열
A(10) : 연산 결과를 저장할 배열
Z : 각 비트 단위별 덧셈 결과
C : 자리올림수
J : 인덱스 변수
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
정보처리기사 2009년 2회(7.5)
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
두 2진수 X와 Y의 덧셈은 각 비트마다 X와 Y, 아
랫단에서 올라오는 자리올림 C를 더해 계산값과
앞단으로 전달되는 자리올림값(C)을 계산.
각 비트 위치의 값에 대한 처리 결과
입력
출력결과
비
고
A(J)
z
C
0
0
z
0
1
1
1
z
0
1
0
1
1
z
0
0
1
1
2
0
Z-2
1
1
0
0
1
1
z
0
1
0
1
2
0
Z-2
1
자리올림발생
1
1
0
2
0
Z-2
1
자리올림발생
알고리즘1
1
1
3
1
Z-2
1
자리올림발생
제주국제대학교 컴퓨터응용공학과
X
Y
C
Z=X+Y+C
0
0
0
0
0
0
자리올림발생
2진수 덧셈-알고리즘
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
⑪
⑫
⑬
시작
배열초기화 X[10]={0,0,0,0,1,0,1,0,1,1},
Y[10]={0,0,1,1,1,1,1,1,1,1},
int A[10];
변수초기화 Z=0, J=10, C=0
비트연산 Z=X[J]+Y[J]+C
자리올림 검사 Z<2, yes이면 자리올림 없으므로 C=0, A[J]=Z goto 7
no이면 자리올림 발생 C=1, A[J]=Z-2
다음배열요소로 이동 J=J-1
종료조건 j>0 yes이면 goto 4
마지막단계 자리올림 검사 C==0 no이면 마지막단계 자리올림 발생했으므
로 print “OVERFLOW”, goto 13
yes이면 배열의 처음부터 연산결과 출력 J=J+1
print A(J)
출력종료조건 J<10 yes이면 goto 10
끝
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
두 2진수 X와 Y의 덧셈은 각
비트마다 X(J)와 Y(J), 아랫
단에서 올라오는 자리올림 C
를 더해 계산한 후 Z에 저장
① : Z=X(J)+Y(J)+C
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
비트 위치 연산결과 : Z

자리올림이 발생하지 않는 경
우(Z<2인 경우)


앞단에 전달되는 자리올림값 C가
0
A(J)에 연산결과 Z를 저장
③ : A(J)=Z

자리올림이 발생하는 경우


C가 1
A(J)에 Z에서 자리올림값(2)을
제외한 값을 저장
② : A(J)=Z-2
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
연산 반복


최하위 비트(LSB)부터 최상위
비트(MSB)까지 차례대로 반복
제어변수 : J


10부터 0이 될 때까지
하나씩 감소시키며 반복 수행
④ : J=J-1
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
최상위 비트까지 수행한 후

자리올림이 발생하지 않은 경
우

변수 C의 값이 0인지로 판단
⑤ : C=0


자리올림이 발생

알고리즘
배열 A에 저장된 연산결과를 비트
단위로 출력
“OVERFLOW”를 출력
제주국제대학교 컴퓨터응용공학과
2진수 덧셈
시작
X(10), Y(10), A(10)
Z=0, C=0
J=10,1,-1
Z=X(J)+Y(J)+C
YES
Z<2
No
C=1
C=0
A(J)=Z-2
A(J)=Z
C=0
YES
No
“OVERFLOW”
알고리즘
J=1,10,1
A(J)
끝 제주국제대학교 컴퓨터응용공학과
2진수 뺄셈 - 연습문제
 배열 X(10)과 Y(10)에 2진수가 각각 입력되어 있다. 두 2
진수의 뺄셈 결과를 2진수 형태로 출력하고자 한다. 제시
된 <처리조건>을 참조하여 <그림>의 괄호 안 내용에 가
장 적합한 항목을 <답항보기>에서 선택하시오.
|처리조건|
1. 배열크기가 10일 경우 배열의 요소는 1부터 10까지 구성
되는 것으로 한다. 예를 들어, H라는 배열의 크기가 10일
경우 H(10)으로 표시하고 구성요소는 H(1)부터 H(10)으
로 구현한다고 가정한다.
2. 배열 X(10) 및 Y(10)에 입력되어 있는 2진수 값의 부호
비트는 없으며, 범위는 0000000000~1111111111 로
간주한다.
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 뺄셈 - 연습문제
3. 각 배열의 첫 번째 요소 X(1), Y(1), A(1)를 MSB(최상위
비트)로 간주한다.
4. 알고리즘에 사용된 변수들은 다음과 같다.
-
알고리즘
X(10), Y(10) : 연산할 2진수 데이터 저장 배열
A(10) : 연산 결과를 저장할 배열
Z : 각 비트 단위별 뺄셈 결과
B : 자리내림수
J : 인덱스 변수
제주국제대학교 컴퓨터응용공학과
2진수 뺄셈
두
로
림
각




알고리즘
2진수 X와 Y의 뺄셈은 각 비트마다 X와 Y, 바
직전 단의 위치에 빌려준 1을 고려하여 자리내
B를 계산.
비트 위치의 값에 대한 처리 결과
0-0=0
0-1=1 자리내림 발생
1-0=1
1-1=0
2 2 2
x= 0 1 0 0 1 0 1 0 1 1
y= 0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 1 1 1 0 0
제주국제대학교 컴퓨터응용공학과
입력
알고리즘
출력결과
X
Y
B
Z=X-Y-B
A(J)
z
B
0
0
0
0
0
z
0
0
0
1
-1
1
Z+2
1
0
1
0
1
1
z
0
0
1
1
0
0
Z
0
1
0
0
1
1
Z
0
1
0
1
0
0
Z
0
1
1
0
0
0
Z
0
1
1
1
-1
1
Z+2
1
비
고
자리내림발생
자리내림발생
제주국제대학교 컴퓨터응용공학과
2진수 뺄셈-알고리즘
① 시작
② 배열초기화 X[10]={0,1,0,0,1,0,1,0,1,1},
Y[10]={0,0,0,0,0,1,1,1,1,1},
int A[10];
③ 변수초기화 Z=0, J=10, C=0
④ 비트연산 Z=X[J]-Y[J]-B
⑤ 자리올림 검사 Z<0, no이면 자리내림 없으므로 B=0, A[J]=Z
goto 7
⑥ yes이면 자리내림 발생 B=1, A[J]=Z+2
⑦ 다음배열요소로 이동 J=J-1
⑧ 종료조건 j>0 yes이면 goto 4
⑨ no이면 배열의 처음부터 연산결과 출력 J=J+1
⑩ print A(J)
⑪ 출력종료조건 J<10 yes이면 goto 10
⑫ 끝
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 뺄셈 - 연습문제
알고리즘
제주국제대학교 컴퓨터응용공학과
2진수 뺄셈-순서도
시작
시작
X(10), Y(10), A(10)
X(10), Y(10), A(10)
Z=0, B=0,J=10
Z=0, B=0
Z=X(J)-Y(J)-B
Z<0
J=10,1,-1
No
Z=X(J)-Y(J)-B
YES
B=1
B=0
A(J)=Z+2
A(J)=Z
J=J-1
YES
Z<0
YES
No
B=1
B=0
A(J)=Z+2
A(J)=Z
J>0
No
J=1,10,1
J=J+1
A(J)
A(J)
J<10
알고리즘
끝
No
YES
끝
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
 다음은 2진수로 입력된 데이터의 2의 보수를 구하는 알고
리즘이다. 제시된 <처리조건>을 참조하여 <그림>의 괄
호 안에 가장 적합한 항목을 <답항보기>에서 선택하시오.
|처리조건|
1. 알고리즘에 사용된 변수들은 다음과 같다.
-
B(N) : 이진수 데이터 저장 배열
O(N) : 1의 보수 결과 저장 배열
T(N) : 2의 보수 결과 저장 배열
N : 데이터 자료의 크기(bit 수)
C : 자리올림수
J : 인덱스 변수
2. 2진수 데이터 자료의 크기 N은 8로 지정하도록 한다.
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
정보처리기사 2009년 4회(10.18)
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
2의 보수를 구하는 방법 중 가장 간단한 방법


1의 보수를 구한 후 1을 더해주면 된다.
1의 보수는 각 비트 위치마다 표현 가능한 최대값 1에
서 각 위치의 값을 빼주면 된다.
입력
출력
O(J)
1의 보수 결과
C
더해지는 값
T(J)
O(J)+1
C
자리올림수
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
첫 번째 반복 구간



1의 보수를 구해 배열 O
에 저장하는 부분.
8개의 비트에 대해 J의
값을 1부터 8까지 1씩 증
가시키며 반복처리.
배열 O의 J번째 비트값은
1에서 입력된 2진수 배열
B의 J번째 비트값을 뺀
계산값으로 한다.
① : O(J)=1-B(J)
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
두 번째 반복 구간



1의 보수 결과(배열 O)
에 1을 더해 2의 보수를
구해가는 과정.
최하위 비트(LSB)부터
더하고 자리올림이 발생
하면 앞단에 전달, 동일
한 과정을 최상위 비트
(MSB)까지 반복
반복을 제어하는 제어변
수 J는 최하위비트 위치
인 N으로 초기화
② : J=N
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기


최상위 비트 위치인 0일
때까지 반복
반복 구간내에 J의 값을
하나씩 감소시키는 문장
이 포함되어야 한다.
⑤ : J=J-1
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기


더해지는 값 C와 더한 결
과 T(J)는 1로 설정.
배열 O의 J번째 비트값이
더하는 값 C와 같다면 T
의 J번째 값을 0으로 변경
③ : T(J)=0

앞단에 전달될 자리올림
값(C)은 O(J)의 값과 이
전 C값 모두 1일 경우에
만 1이 되어야 하며, 이는
O(J)*C로 계산
④ : C=O(J)*C
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기 - 연습문제
 제시된 <그림>은 5자리의 이진수를 입력받아 1의 보수와
2의 보수로 변환하여 각 배열에 저장하는 순서도이다. 제
시된 <처리조건>을 참조하여 아래 순서도의 괄호 안 내용
에 가장 적합한 항목을 <답항보기>에서 선택하시오.
|처리조건|
1. 2진수의 첫 번째 자리는 배열의 가장 마지막 포인터에 입
력받는다.
(예) 2진수 10111이 순서대로 입력되면 A(1)=1,
A(2)=0, A(3)=1, A(4)=1, A(5)=1 순서로 배열 포인터
에 기억된다.
2. 2진수 배열은 A(1)~A(5) 포인터로 가정한다.
3. MOD는 나머지를 구하는 연산자이다.
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기 - 연습문제
4. 알고리즘에 사용된 변수는 아래와 같다.
-
알고리즘
A(P) : 2진수를 입력받는 배열
P : 배열 포인터
Comp1 : 1의 보수 저장 배열
Comp2 : 2의 보수 저장 배열
C : 자리올림수
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기 - 연습문제
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기 - 연습문제
1. 시작
2. 초기화 P=0, C=1
3. 배열인덱스 증가 P=P+1
4. 입력 READ A(P)
5. 1의 보수 COMP1(P)=1-A(P)
6. 입력종료조건 P<5 YES이면 GOTO 3
7. NO이면 2의보수 COMP2(P)=COMP1(P)+C
8. 결과값 COMP2(P)=COMP2(P) MOD 2
9. 자리올림 계산 C=COMP1(P)*C
10. P=P-1
11. 종료조건 P==0 NO이면 GOTO 7
12. YES이면 출력위한 배열 인덱스 증가 P=P+1
13. 출력 PRINT COMP1(P), COMP2(P)
14. 출력 종료조건 P<5 YES이면 GOTO 12
15.
끝
알고리즘
제주국제대학교 컴퓨터응용공학과
2의 보수 구하기 - 연습문제
COMP2(P)=COMP1(P) + C
시작
COMP2(P)=COMP2(P) MOD 2
P=0, C=1
C=COMP1(P) * C
P=P+1
P=P-1
READ A(P)
P=0
No
Yes
P=P+1
COMP1=1-A(P)
COMP1(P), COMP2(P)
Yes
P<5
No
P<5
No
알고리즘
끝
Yes
제주국제대학교 컴퓨터응용공학과