관리 메뉴

도드넷

정보처리기능사 실기 알고리즘 유형#6 - 진법변환 보수 본문

창고/정보처리기능사[완]

정보처리기능사 실기 알고리즘 유형#6 - 진법변환 보수

도드! 2016. 4. 19. 03:29
반응형




정보처리기능사 실기 알고리즘 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.... @_@ 실제 프로그래밍하듯 머리에서 계속 컴파일(?)하면서 작성해봄.








반응형
Comments