도드넷
정보처리기능사 실기 알고리즘 유형#6 - 진법변환 보수 본문
정보처리기능사 실기 알고리즘 6번째 유형은
진법변환과 보수취하는 법에대한 알고리즘.
For Ponies, for my love!
정보처리기능사 실기 요점정리#6 - 진법변환 / 보수 취하는 법
1. 진법변환 알고리즘
- 진법변환 알고리즘은 사람이 진법변환하는것과 같은 방식으로 하면된다.
10진수를 N진수로 바꾸는 과정
1. 10을 N으로 나눌수없을 때까지 N으로 나눈다.
2. 나머지를 역순으로 배치한다.
N진수를 10진수로 바꾸는 과정
1. N진수의 각 자리수 x N^M-1 해서 전부 더한다.
2. 보수 알고리즘
- 1의 보수 : 어떤 이진수 Z가 있고 해당 이진수 Z를 1의 보수를 취하고 싶다고하면, 1 - Z 해주면 된다.
Z가 1이면 0이 되고 0이면 1이된다.
- 2의 보수 : 맨뒷항 +1한 값에 MOD 2를 해서 올림을 할건지 안할건지 파악한후, 해당항 x MOD2한 값을 통해서 다음 CARRY를 구해내는것이 핵심이라고 생각된다.
예제
10진수를 입력받아 16진수 2진수로 변환하고 2진수는 2의 보수를 취한후 10진법으로 표현하는 알고리즘
풀이
D = 0
HEX(256)
BI(256)
NEWBI(256)
NEWBI_2(256)
CARRY = 1
MOK = 0
REST= 0
HOWMANY = 0
D를 입력아서 저장한다.
[10진수 -> 16진수 변환]
HEXD = D // 원본 입력자료 D의 오염방지, 보존을 위해 HEXD로 복사해서 사용.
Point 1
HOWMANY = HOWMANY + 1
MOK = int(HEXD / 16)
REST= HEXD MOD 16
HEX(HOWMANY) = WUT
HEXD = MOK
HEXD < 16 이면 탈출하고 아니면 Point 1으로 돌아가시오.
HEX(HOWMANY) = HEXD // 더이상 나눌수없는 몫을 마지막으로 저장.
반복문 N = HOWMANY, 1, -1
만약 HEX(N)가
10이면 A
11이면 B
12이면 C
13이면 D
14이면 E
15이면 F
로 변환한다. // 16진수 문자로 가공하는 프로세스
출력 :: HEX(N)
[변수 재초기화]
MOK = 0
REST= 0
HOWMANY = 0
[10진수 -> 2진수 변환]
Point 2
HOWMANY = HOWMANY + 1
MOK = int(D / 2)
REST = D MOD 2
BI(HOWMANY) = REST
D = MOK
D < 2 이면 탈출하고 아니면 Point 2로 돌아가시오.
BI(HOWMANY) = D
CNT = HOWMANY
반복문 N = CNT, 1, -1
출력 :: BI(N)
CNT2 = HOWMANY
[2의 보수]
반목문 N = CNT2, 1, -1
NEWBI(N) = 1 - BI(N) // 1의 보수로 만들고
CNT3 = HOWMANY
CARRY = 1 // 2의보수를 취하기위해 1로설정
반복문 N = CNT3, 1, -1
NEWBI_2(N) = NEWBI(N) + CARRY
NEWBI_2(N) = NEWBI_2(N) MOD 2 //2가 될경우 0 으로 만들어서 자리올림 구현
CARRY = NEWBI(N) * CARRY // 올림수 구하기 1*1 이면 1로 올림수나옴.
출력 :: NEWBI_2(N)
HOLY JESUS.... @_@ 실제 프로그래밍하듯 머리에서 계속 컴파일(?)하면서 작성해봄.
'창고 > 정보처리기능사[완]' 카테고리의 다른 글
정보처리기능사 실기 알고리즘 유형#8 - 주차요금 알고리즘 (2) | 2016.04.19 |
---|---|
정보처리기능사 실기 알고리즘 유형#7 - 화폐 매수 (0) | 2016.04.19 |
정보처리기능사 실기 알고리즘 유형#5 - 랭킹, 석차 알고리즘 (0) | 2016.04.18 |
정보처리기능사 실기 알고리즘 유형#4 - 홀수짝수 평균 알고리즘 (0) | 2016.04.18 |
정보처리기능사 실기 알고리즘 유형#3 - 피보나치 수열 알고리즘 (0) | 2016.04.18 |